- 締切済み
SQL文で教えてください
Left join と Right join の両方の機能をもった、一つのSQL文はどうしたらいいのでしょうか。 つまり、Left join は左側のテーブルを基準とし右にないものでも右の部分はNUllのままで抽出しますが、双方にあるものは統合して出力し、片方に無いものは、ない部分だけNullで、とにかく両方を抽出するというSQL文が書けないかと思案しています。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yamada_g
- ベストアンサー率68% (258/374)
回答No.2
full outer joinではダメなのでしょうか。
- 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)
質問者
お礼
早速のご返事ありがとうございます。しかし and で記述してあるせいか1行も抽出されません。 お詫びですが、まったく同じ趣旨の質問が過去にあり、回答されていました。 union を使うとのことで、これから試してみたいと思います。 ありがとうございました。
お礼
いろいろ試していろいろな人に聞いて、やっとできました。 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 ありがとうございました。
補足
postgresqlでfull outer join を使うと同じレコードが複数行抽出されてしまいます。 また、お詫びですが、まったく同じ趣旨の質問が過去にあり、回答されていました。 union を使うとのことで、これから試してみたいと思います。 ありがとうございました。