• ベストアンサー

JOIN句への変換

はじめまして。 「*=」をJoin句に直したいのですが、同様の結果がえられません(T.T) SQL初心者です、どうぞよろしくお願いいたします。 この式をJOIN句に直したいです。 FROM A_TBL, B_TBL as B_TBL01, B_TBL as B_TBL02, C_TBL, D_TBL WHERE A_TBL.No = B_TBL01.No AND A_TBL.No = B_TBL02.No AND A_TBL.No = C_TBL.No AND A_TBL.No *= D_TBL.No AND C_TBL.ID *= D_TBL.ID AND ↓こうしたのですが、正しい結果がえられません。 FROM (D_TBL RIGHT OUTER JOIN C_TBL ON C_TBL.ID = D_TBL.ID) RIGHT OUTER JOIN A_TBL INNER JOIN B_TBL AS B_TBL01 ON A_TBL.No = B_TBL01.No1.No INNER JOIN B_TBL AS B_TBL02 ON A_TBL.No = B_TBL02.No2.No ON A_TBL.No = D_TBL.No AND A_TBL.No = C_TBL.No どうぞ、ご教授お願いいたします。

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

先にINNER JOIN してみては FROM A_TBL inner join B_TBL as B_TBL01 on A_TBL.No = B_TBL01.No inner join B_TBL as B_TBL02 on A_TBL.No = B_TBL02.No inner join C_TBL on A_TBL.No = C_TBL.No left join D_TBL on A_TBL.No = D_TBL.No AND C_TBL.No = D_TBL.No

ShinjinS
質問者

お礼

nora1962さま お礼が遅くなり申し訳ありません! 教えて頂いたSQLで、求めていたデータが取得できました。 本当に、本当にありがとうございました。 初めてのSQLで苦戦の日々ですが、もっと自分でも勉強します。 心より感謝いたします。ありがとうございました☆

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

その他の回答 (2)

  • webuser
  • ベストアンサー率33% (372/1121)
回答No.3

#2です。 >D_TBLとその他の関係が逆(right で D_TBL)以外は#1さんので行けると思います。 >D_TBLが全件になるので、 >軸となるD_TBLを先に書いて、 >そこに残りすべてを結合した結果をleftするのでも良いと思います。 勘違いです。逆の逆にしてしまっていました。 やっぱり、#1さんのであってます。

ShinjinS
質問者

お礼

webuserさま お礼が遅くなり申し訳ありません! 色々と考えてくださってありがとうございます! 「軸となるD_TBLを先に書いて、 そこに残りすべてを結合した結果をleftするのでも良いと思います。」 を、自分なりに書いてみたのですがまだ未熟でうまくいきませんでした。もっと勉強します。 本当にありがとうございました☆

すると、全ての回答が全文表示されます。
  • webuser
  • ベストアンサー率33% (372/1121)
回答No.2

D_TBLとその他の関係が逆(right で D_TBL)以外は#1さんので行けると思います。 D_TBLが全件になるので、 軸となるD_TBLを先に書いて、 そこに残りすべてを結合した結果をleftするのでも良いと思います。 直接関係のない事ですが、 B_TBLは2回登場しますが、キーが同じなので1回でも同じ気がします。

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

関連するQ&A