2012-04-03 10 views
0

に参加左私は行方不明の価格を知りたいMySQLは私は2つの表1は、インデックスと別である必要があり

table: index 
columns: trandate, indexcode 

table: price 
Columns: truncate, symbol, price 

下のような価格構造です。そのために私は、クエリを発行します。

select i.trandate,i.indexcode,p.trandate,p.price 
    from index i 
    left join price p on i.trandate = p.trandate 
where p.symbol='ABC' and indexcode="New" 

上記のクエリは、価格表に行方不明でも、様々な価格かかわらず、空の日付が表示されません。私が理解しているのは、なぜインデックステーブルにシンボルフィールドがないのかということだけです...しかし、理論ごとに、あるテーブルのすべての行と別のテーブルの一致値だけを表示する場合は、左または右の結合を使用します誰か助けてもらえますか?あなたはこの

where p.symbol='ABC' and indexcode="New" 

をすれば

+0

これは悪い額装質問です。あなたの質問タイトルを作成するときに具体的にしてください。 –

+0

indexcode = "New" i.indexcodeにする必要がありますか?タイプミス? DATETIME型のトランジートか、DATEのみのトランジションですか? –

+0

サンプルデータと実際の/予想される結果を掲載できますか? –

答えて

1

あなただけのものに準拠してヒットを取得します。だから、彼らはすべて「ABC」というシンボルを持っていなければなりません。今私はあなたがこれを行う場合にあなたのNULL値が存在すると期待する理由はわかりませんが、あなたはこれを意味すると思いますか?

where (p.symbol='ABC' OR p.symbol IS NULL) and indexcode="New" 
+0

I必要な結果過去とクエリが\t \t \t 日\t INDEXCODE \t Trandate \t価格 29日 - 3月 - 92 \t新しい\t 29日 - 3月 - 92 \t 61.9 30日 - 3月 - 92 \t新しい\tヌル\tヌル必要な結果を生成 31日 - 3月 - 92 \t新しい\t 31日 - 3月 - 92 \t 61.9 現在のクエリは、次のような結果\t \t \t 29日 - 3月 - 92 \t新しい与えます29-Mar-92 \t 61.9 31-Mar-92 \t新しい\t 31-Mar-92 \t 61.9 – user1019538

+0

それはちょっと読めませんか?コードタグなどを使って、あなたの質問に貼り付けることができますか? – Nanne

1

あなたはleft joinON一部にleft join編テーブルに関する条件を移動する必要があります。

select i.trandate,i.indexcode,p.trandate,p.price 
    from index i 
    left join price p on i.trandate = p.trandate and p.symbol='ABC' 
where indexcode="New" 
+0

私はあなたの提案ごとに順序を変え、運がないようにします。私はindexcodeのinfrontを追加します。私は必要な結果と生成されたクエリを貼り付けます。 – user1019538

+0

あなたの結果は、クエリが実際に動作することを示しています。 'i.trandate'ではなく' p.trandate'(3列目)を 'null 'にする必要があります。行方不明の価格だけを見たい場合は、where節の最後に「AND p.trandate is null'を追加してください。乾杯 –

関連する問題