DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テーブルの結合

  • 題名: テーブルの結合
  • 著者: ヨシヲ
  • 日時: 2011/06/16 12:32:20
  • ID: 28671
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[C# oracle]
分類:[.NET]

SQLにてテーブルA、Bを結合して結果を出力したいのですが、
うまくいきません。

TblA TblB
col1,col2,col3 col1,col4
1 , A , 10 1 , aa
2 , B , 20 2 , bb
3 , C , 30 3 , cc

col1,col2,col3,col4
1 , A , 10 , aa
2 , B , 20 , bb
3 , C , 30 , cc


上記から結合した結果が出力したいのですが、
両者にデータがある場合はうまくいくのですが、
どちらかにデータがない場合、うまくいきません。
( col1 を条件に結合しているからだと思うのですが)

また、unionを組みましたが重複していまい、データが倍になってしまいます。
何かいい結合のしかたはないでしょうか。
左外部結合か右外部結合すればよいかと思います。

Oracleの例が以下にあります。
http://www.shift-the-oracle.com/sql/left-right-outer-join.html
shuさん

回答ありがとうございます。

今回の場合、結合するテーブルはどちらもデータなしの場合が
考えられます。
左(または右)外部結合で行った場合、データがないテーブルを基準と
すると欲しいデータが取得できません。

こういった場合も、左(または右)外部結合で解決できるでしょうか。
■No28680に返信(ヨシヲさんの記事)

> 今回の場合、結合するテーブルはどちらもデータなしの場合が
> 考えられます。
> 左(または右)外部結合で行った場合、データがないテーブルを基準と
> すると欲しいデータが取得できません。
そうなるとFull Outerになります。Full Outerが使えない場合
左外部結合 union (右外部結合 where 左 is Null)みたいな感じです。
shuさん

回答ありがとうございます。

>左外部結合 union (右外部結合 where 左 is Null)
思いつきもしなかったです。
Full Outerと共に試してみます。
■No28686に返信(ヨシヲさんの記事)
> shuさん
>
> 回答ありがとうございます。
>
> > 左外部結合 union (右外部結合 where 左 is Null)
> 思いつきもしなかったです。
> Full Outerと共に試してみます。

うーん... まあ小難しいことやこまけぇこたぁ書かないでおきます。
とりあえず、奈落の女王様のところにあったので紹介しておきます。
http://d.hatena.ne.jp/CAMUS/20070525/1180096537
  • 題名: Re[6]: テーブルの結合
  • 著者: ヨシヲ
  • 日時: 2011/06/21 17:09:16
  • ID: 28689
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
じゃんぬねっとさん

サイトの紹介ありがとうございました。
教えて頂いたサイトを参考にして、解決することができました。
(紹介して頂いたサイトの例題を参考にしました)

shuさん
FULL OUTER JOINで解決できました。
アドバイスありがとうございました。


もう少し自己で調べてから、質問にくるようにします。
失礼な点がありましたら、申し訳ありませんでした。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板