- - PR -
left joinを使ったSQL文について
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-12-15 20:25
Windows 2000 + MySQL4.0.18でアプリケーションを作成しています。
SQL文をどのように実行すれば良いか質問させてください。 以下のようなテーブル構成があります。 create table tbl1( tbl1_id integer, name1 varchar(128), tbl2_id integer); insert into tbl1 values (1, '山田', 1); insert into tbl1 values (2, '佐藤', 2); insert into tbl1 values (3, '鈴木', 3); insert into tbl1 values (4, '池田', null); create table tbl2( tbl2_id integer, tel varchar(128)); insert into tbl2 values (1, '052-111-xxxx'); insert into tbl2 values (2, '052-222-xxxx'); insert into tbl2 values (3, '052-333-xxxx'); create table tbl3( tbl3_id integer, tbl2_id integer, mail varchar(128)); insert into tbl3 values (1, 1, 'yamada@test.com'); insert into tbl3 values (2, 2, 'sato@test.com'); で、以下のような結果を得ようとしています。 山田 052-111-xxxx yamada@test.com 佐藤 052-222-xxxx sato@test.com 鈴木 052-333-xxxx NULL 池田 NULL NULL 以下のようなSQL文を考えましたが、データを思うように得る事が出来ませんでした。 select name1,tel,mail from tbl1 left join (tbl2 left join tbl3 on tbl2.tbl2_id=tbl3.tbl2_id) on tbl1.tbl2_id=tbl2.tbl2_id 得られた結果 山田 052-111-xxxx yamada@test.com 佐藤 052-111-xxxx NULL 鈴木 052-111-xxxx NULL 池田 052-111-xxxx NULL 山田 052-222-xxxx NULL 佐藤 052-222-xxxx sato@test.com 鈴木 052-222-xxxx NULL 池田 052-222-xxxx NULL 山田 052-333-xxxx NULL 佐藤 052-333-xxxx NULL 鈴木 052-333-xxxx NULL 池田 052-333-xxxx NULL | ||||
|
投稿日時: 2004-12-16 08:27
PostgreSQLでは、これで問題ありませんでしたが、 MySQLだと select name1,tel,mail from tbl1 left join tbl2 on (tbl1.tbl2_id=tbl2.tbl2_id) left join tbl3 on (tbl2.tbl2_id=tbl3.tbl2_id); でしょうか。 | ||||
|
投稿日時: 2004-12-16 10:39
めぐさん、ありがとうございます!
思ったデータを取得する事が出来ました。 PostgreSQLではうまくいくのですね。微妙にSQLが違うんですね。 勉強になりました。ありがとうございました! | ||||
1
