- - PR -
left joinを使用したSQL文
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-07 20:37
ここで聞いて良いかわからないのですが、データベースに関する会議室が無いので
ここで質問させてください。 C#からACCESSのデータをOLEで取得しています。tbl1とtble2から列aで表をリンクして データを取得しようとしています。 tbl1 a bb ccc -------- 2 22 222 3 33 333 4 44 444 tbl2 a dddd ----- 1 1111 2 2222 3 3333 取得したいデータ a bb ccc dddd ------------- 1 null null 1111 2 22 222 2222 3 33 333 3333 4 44 444 null 現在は、left joinを使って以下の二つのSQL文を発行してデータを取得し、 ArraList等に保存し、重複をはぶいて新たにArrayListに設定しています。 select tbl1.a,bb,ccc,dddd from tbl1 left join tbl2 on tbl1.a=tbl2.a; 取得したデータ a bb ccc dddd ------------- 2 22 222 2222 3 33 333 3333 4 44 444 null select tbl2.a,bb,ccc,dddd from tbl2 left join tbl1 on tbl1.a=tbl2.a; 取得したデータ a bb ccc dddd ------------- 1 null null 1111 2 22 222 2222 3 33 333 3333 この二つのSQL文を一つで出来ないでしょうか? | ||||||||
|
投稿日時: 2004-04-07 21:05
UNION ですね。
「UNION」でヘルプを調べると分かると思います。 | ||||||||
|
投稿日時: 2004-04-08 10:55
Clusterさん、ありがとうございます。
UNIONですか。聞いた事はありましたが、意味は知りませんでした。 select tbl1.a,bb,ccc,dddd from tbl1 left join tbl2 on tbl1.a=tbl2.a union select tbl2.a,bb,ccc,dddd from tbl2 left join tbl1 on tbl1.a=tbl2.a; こんな感じで一つのSQL文で取得する事ができました。 例えば、 tbl1 a bb ccc -------- 2 22 222 3 33 333 3 33 333 4 44 444 このように重複しているデータも省いてくれるのですね。これは助かります。 select tbl1.a,bb,ccc,dddd from tbl1 left join tbl2 on tbl1.a=tbl2.a これでgroup byが設定出来なくて困っていたところでしたから。 ありがとうございました。 | ||||||||
|
投稿日時: 2004-04-08 11:40
条件文を見ると、FULL OUTER JOINのような?
select tbl1.a,bb,ccc,dddd from tbl1 natural full outer join tbl2; *Accessで使えるかどうかは不明 [ メッセージ編集済み 編集者: Jitta 編集日時 2004-04-08 11:41 ] | ||||||||
|
投稿日時: 2004-04-08 12:46
Access に Full Outer Join はないと思います。
97/2000 ではムリでしたので。 2002は使ったことないのでわかりません。あしからず。
>このように重複しているデータも省いてくれるのですね。これは助かります。 一応、Union Select All を使うと重複分の出力も可能です。 それはそうと、DBの会議室、欲しいですね。 [ メッセージ編集済み 編集者: おけら 編集日時 2004-04-08 12:49 ] | ||||||||
|
投稿日時: 2004-04-08 13:48
Jittaさん、おけらさん、ありがとうございます。
ACCESS2003でfull outer join試してみましたが、残念ながら駄目でした。 他で使用できそうです。勉強になりました。ありがとうございました。 > それはそうと、DBの会議室、欲しいですね。 そうですね。欲しいですね。是非作っていただきたいです。 | ||||||||
|
投稿日時: 2004-04-08 14:50
UNIONは結果セットが肥大化した際に急激なパフォーマンス悪化を伴う場合がありますので、重複行排除の必要が無い場合はUNION ALLの使用をお勧めします。
「(R)DB・SQL」と「HTML・JavaScript」はよく迷子になっていますねー。欲しいです。 |
1