mysql:15628
From: 久光 一誠 <久光 一誠 <ds1i-hsmt@xxxxxxxxxx>>
Date: Tue, 20 Sep 2011 09:58:36 +0900
Subject: [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のセットが重複しない仕組みにしてあるので、一つの商品に同じ国の情報が複数現れることはない前提で考えています。 よろしくお願いいたします。
-> 15628 2011-09-20 09:58 [久光 一誠 <ds1i-hsmt] LEFT JOIN で結合先がない場合 15631 2011-09-20 12:51 ┗[Takeshi Hayase <linu] 15632 2011-09-20 20:44 ┗[久光 一誠 <ds1i-hsmt]