2016-10-04 14 views
0

顧客IDに基づいて2つのテーブルを結合する必要があります。MYSQL内部結合の結果が空です

私のテーブルは表1 = 'vbq-顧客であり、表1の表2 = 'vbq販売'

列は次のとおりです。CUSTOMER_ID | First_name | last_nameなど。 Table2の列は次のとおりです。Receipt_nb |領収書日付| receipt_customer_codeなど。私はCUSTOMER_ID = receipt_customer_code

に参加したい

このクエリの結果をチェックした場合にも、同様の情報の存在が参加するという事実にもかかわらず、空です。

BEGIN 

DROP TABLE `vbq-sales-customers`; 
CREATE TABLE `vbq-sales-customers` 
AS 

(SELECT * 
    FROM `vbq-sales` 
    INNER JOIN `vbq-customers` 
    ON `vbq-sales`.receipt_customer_code=`vbq-customers`.Customer_id 

); 

END` 

私がここで紛失しているものは誰でも分かりますか?

+0

例データを表示 – Jens

+0

私たちはテーブルのデータを表示していない場合は、何も言えません。 –

+0

OK質問を更新しています。 – SamanthaAlexandria

答えて

0

可能性のカップル。説明が簡単なのは、テーブルの1つ(または両方)が空で、ゼロの行が含まれていることです。

または、「一致する」行がありません。 vbq-salesにはreceipt_customer_codeテーブルの値があり、Customer_idカラムの値はvbq-customersの値に等しい行はありません。

これらの列のいずれのデータ型も表示されません。 (等しくならないであろう。)があり、暗黙的なデータ変換が に行くことができ、または我々は長さに長さの異なる CHAR列を固定している場合があります いやはや!私のオラクルを言い訳してください。)テーブル定義なし

、私たちはちょうど推測している。

CREATE TABLE AS文に入れる前に、クエリ(つまり、単純なSELECT文)をテストすることを強くお勧めします。テーブルの作成中にエラーが発生したことを示すわけではないので、CREATE TABLEが失敗するその他の理由は無視します。


私はBEGINENDとだか分かりません。これは、Oracleの無名ブロックのように見えました。しかし、識別子の背後にあるバッククォートは非常にMySQLです。そこには構文のコレクションがあります。

問題がSELECTクエリでゼロ行を返している場合は、デバッグするだけです。 CREATE TABLE ASとその他すべてを取り除く。

カラムに格納されている実際の内容を調べるには、HEX()関数を使用します。印刷できない文字を含むすべての文字は印刷可能な文字0-9A-Fです。

値のいずれかに印刷できない文字があると思われます。タブx'09'、改行x'0A'、キャリッジリターンx'0D'など

+0

ハイスペンサー:データ型はVARCHAR(50)です。私は一致する値で両方のテーブルを照会しました。しかし、一致する行は自分のコードでは表示されません。 – SamanthaAlexandria

+0

SELECTだけで実行されると、すべての行が返されますか?値に「隠された」文字(タブ、改行、改行など)がないことは確かですか? OracleスタイルのDUMP()関数がない場合、HEX()関数を使用して列の値を検査することができます.... 'SELECT HEX(c.customer_id)FROM \' vbq-customers \ 'WHERE c.customer_id LIKE ' abc% 'LIMIT 1'; – spencer7593

+0

私はCREATEを使わずにクエリを単独でテストしていますが、動作しますが、何も表示されません。 – SamanthaAlexandria

関連する問題