mysql:15631
From: Takeshi Hayase <Takeshi Hayase <linus@xxxxxxxxxx>>
Date: Tue, 20 Sep 2011 12:51:38 +0900
Subject: [mysql 15631] Re: LEFT JOIN で結合先がない場合
初めまして。早瀬と申します。 > と書いたのですが、これでは結合先がないものは空値またはNULLで返ってこ ず、期待した結果になりませんでした(情報Aと情報Bの2行しか返ってこなかっ た)。 where句でshouhin_id = 1で絞り込んでいますので、 2行しか返ってこないのは正しいですね。 こうすると全て出るかと思います。 SELECT tabJ.jouhou FROM tabK LEFT JOIN tabJ ON tabK.id = tabJ.kuni_id and shouhin_id = 1 ORDER BY tabK.id パッと思いつきで記述したので、何か見落としがあったらご容赦を。 以上です。 (2011/09/20 9:58), 久光 一誠 wrote: > 久光と申します > > 下記のような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]