2011年9月20日

[mysql 15628] LEFT JOIN で結合先がない場合

久光と申します

下記のような3つのテーブルがあり、

商品テーブル(tabS)
[id] [name]
1 テレビ
2 洗濯機


国テーブル(tabK)
[id] [name]
1 日本
2 米国
3 中国

国別情報テーブル(tabJ)
[shouhin_id] [kuni_id] [jouhou]
1 1 情報A
1 3 情報B
2 2 情報C

このテーブル構成から例えばテレビに関する国別情報を国テーブルのid順に
 情報A
 (空値またはNULL)
 情報B
という形で取り出そうと思い

SELECT tabJ.jouhou
FROM tabK LEFT JOIN tabJ ON tabK.id = tabJ.kuni_id
WHERE shouhin_id = 1
ORDER BY tabK.id

と書いたのですが、これでは結合先がないものは空値またはNULLで返ってこず、期待した結果になりませんでした(情報Aと情報Bの2行しか返ってこなかった)。
上記のテーブル構成で、国テーブルのid順に沿って国別情報テーブルから(情報がない場合は空値またはNULLが返ってくるように)取り出すにはどんなSQL文を書いたらいいでしょうか?

なお国別情報テーブルは商品IDと国IDのセットが重複しない仕組みにしてあるので、一つの商品に同じ国の情報が複数現れることはない前提で考えています。

よろしくお願いいたします。

投稿者 xml-rpc : 2011年9月20日 09:58
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/106431
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。