こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

mysql 複数テーブルの条件付け摘出

こんにちは。

初歩的なことだと思うのですが、複数テーブルからのレコード摘出で躓いてしまったのでご教授ください。


以下のような2つのテーブルがあったとして、

table_a
----------------
acount_no / name
1 / aaa
2 / bbb

table_b
----------------
acount_no / value / update_at
1 / 0000 / 2012-05-12
2 / 3333 / 2012-05-12
1 / 1111 / 2012-05-13
2 / 5555 / 2012-05-13


table_aのacount_noとnameは必ず必要で、table_bのupdate_atに対応するvalueを条件付けで取り出したい場合はどのようにしたら良いのでしょうか。

レコードに存在しない日付を指定したときには、空欄で欲しいのですが・・・、

acount_no / name / value
1 / aaa / null
2 / bbb / null


例えば、
select a.acount_no,name,value from table_a as a LEFT JOIN table_b as b ON a.acount_no = b.acount_no where b.update_at = '2012-05-14' order by a.acount_no asc

とすると結果が0行になってしまいます。


外部結合の使い方が間違っているのでしょうか・・・。
お力添えの程、宜しくお願い申し上げます。

投稿日時 - 2012-05-15 21:30:12

QNo.7477713

困ってます

質問者が選んだベストアンサー

結合した結果から日付で抽出してはいけませんね
結合条件に日付をいれればよいでしょう

select a.acount_no,name,value from table_a as a LEFT JOIN table_b as b ON a.acount_no = b.acount_no and b.update_at = '2012-05-14' order by a.acount_no asc

投稿日時 - 2012-05-15 22:23:22

お礼

なるほど!

結合条件に指定する方法があるのですね。

勉強になりました。m(_ _)m

投稿日時 - 2012-05-16 14:54:36

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

select a.acount_no,name,value from table_a as a LEFT JOIN table_b as b ON (a.acount_no = b.acount_no and b.update_at = '2012-05-14')

試さないで書いてますが。

投稿日時 - 2012-05-15 22:28:22

お礼

結合条件に日付を指定するんですね。

この度は勉強になりました。有難う御座います。m(_ _)m

投稿日時 - 2012-05-16 14:56:10

あなたにオススメの質問