• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブル結合について、下記SQLをANSI結合の書き方で表したい。)

テーブル結合についてのANSI結合の記述方法

このQ&Aのポイント
  • テーブル結合のANSI結合の書き方について、具体的なSQLコードとともに説明します。
  • 質問のSQLをANSI結合の記述に変換する方法と、手元での実行結果などについて解説します。
  • 要点をまとめると、テーブル結合のANSI結合ではLEFT JOINを使用して結合条件を指定します。

質問者が選んだベストアンサー

  • ベストアンサー
  • saneppie
  • ベストアンサー率66% (18/27)
回答No.3

敢えていうなら、Xの後のカンマが不要です。 select * from (select key from A union select key from B union select key from C) X LEFT JOIN A ON X.key=A.key LEFT JOIN B ON X.key=B.key LEFT JOIN C ON X.key=C.key Aテーブルのkey、Bテーブルのkey、Cテーブルのkeyが重複する可能性があり、 keyが重複する場合は、単純横展開ではなく、1行にしたいという条件であれば、 (+)を単純にLEFT OUTER JOINにするだけで良いと思います。

-0-y
質問者

お礼

ありがとうございます 無事レコードに重複せず参照できました

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

>aテーブルでジョイントする理由は1レコード単位での >抽出としたいがためです大変参考になりました >ありがとうございます 横展開したいだけならUNIONで項目をずらしていけばいいのではないでしょうか。 select key as A_key, null as B_key, null as C_Key from A union select null as A_key, key as B_key, null as C_Key from B union select null as A_key, null as B_key, key as C_Key from C 前提条件をはっきりしていただけると、もう少しピンポイントで回答できるとおもいます。

すると、全ての回答が全文表示されます。
  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.1

構文的にはあっているようですが, A、B、CをUNIONしたXとさらにA、B、Cとジョインする意味はないと思います。 単純にX内のAと外のAは別テーブルなのか、X内のA、B、Cを外で参照できると勘違いしているのか、X内のAと外のAに意味はないのかはっきりさせてください。 ()内でUNIONした者はXという別名がついているのでX.keyと指定しないと参照出来ません。

-0-y
質問者

お礼

この質問より前につまづいていた 問題があるのですが 下記の方の質問と似ていることから このsql文を参照しました その為再度aテーブルでジョイントする 理由は1レコード単位での 抽出としたいがためです大変参考に なりました ありがとうございます 大戦

すると、全ての回答が全文表示されます。

専門家に質問してみよう