• 締切済み

SQL文で教えてください

Left join と Right join の両方の機能をもった、一つのSQL文はどうしたらいいのでしょうか。 つまり、Left join は左側のテーブルを基準とし右にないものでも右の部分はNUllのままで抽出しますが、双方にあるものは統合して出力し、片方に無いものは、ない部分だけNullで、とにかく両方を抽出するというSQL文が書けないかと思案しています。

みんなの回答

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

full outer joinではダメなのでしょうか。

tennor70
質問者

お礼

いろいろ試していろいろな人に聞いて、やっとできました。 SELECT A.*,B.* FROM (SELECT * FROM Atable WHERE 条件A) AS A FULL OUTER JOIN (SELECT * FROM Btable WHERE 条件B ) AS B ON A.keyfield = B.keyfield ありがとうございました。

tennor70
質問者

補足

postgresqlでfull outer join を使うと同じレコードが複数行抽出されてしまいます。 また、お詫びですが、まったく同じ趣旨の質問が過去にあり、回答されていました。 union を使うとのことで、これから試してみたいと思います。 ありがとうございました。

  • Kensyusei
  • ベストアンサー率30% (25/81)
回答No.1

結合列がNULLだった場合の条件を書き換えてやればいいんじゃないでしょうか? NVL(A_TABLE.X) = NVL(B_TABLE.X) AND (A_TABLE.X IS NOT NULL OR B_TABLE.X IS NOT NULL)

tennor70
質問者

お礼

早速のご返事ありがとうございます。しかし and で記述してあるせいか1行も抽出されません。 お詫びですが、まったく同じ趣旨の質問が過去にあり、回答されていました。 union を使うとのことで、これから試してみたいと思います。 ありがとうございました。

関連するQ&A