MySQLの結合(join)について質問です。


テーブルがmain,sub1,sub2と存在するとします。
この3つのテーブルを結合するには
"SELECT * FROM (main INNER JOIN sub1 on main.id=sub1.id) INNER JOIN sub2 on main.id=sub2.id";

という文になるかと思います。

そこで質問ですが、各テーブルに共通するidが入っていないとデータが表示されません。例えば、mainのidに[aaa]があり、sub1のidに「aaa」があるけど、sub2にはない。という状況です。

しかし、表示上(PHPでの出力上)ではsub2の内容は空として表示させたい場合、どのようなSQL文を書けばいいのでしょうか?

仮に、「JOINで結合する場合、全テーブルに共通する値がないと出力されない」

というならそれで納得します。

MySQLは4.0以降でお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/08/24 17:20:42
  • 終了:2007/08/24 17:49:53

回答(2件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/08/24 17:23:36

ポイント60pt

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_09.htm

外部結合にすればいいですよ。

left joinを使います。

id:kt26

上記のURLを見ていたのですが、勉強不足で抜けてしまいました。

そしてleft joinを使って思い通りに出来ました。回答ありがとうございました。

2007/08/24 17:49:34
id:ManalTencho No.2

ManalTencho回答回数129ベストアンサー獲得回数92007/08/24 17:41:30

ポイント10pt

INNER JOIN を LEFT JOIN に変えてみてはいかがでしょうか。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません