• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Oracle[10g]のSQL文について(改めて))

Oracle[10g]のSQL文についての質問

このQ&Aのポイント
  • テーブルの作成がおかしい様でしたので、改めて質問させて下さい。
  • [B]テーブルには、[CODE3](KEY) [NAMEB]のフィールドがあります。
  • 結果が[NO/LINE/CODE/NAMEB] X 1 A-1 NAME-B-1となる様にしたいのですが、4行もでてしまいます。問題は、[B]テーブルです。

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

  • ベストアンサー
回答No.3

SELECT C1.NO, C1.LINE, A.CODE, B.NAMEB, B_1.NAMEB FROM (((C1 LEFT JOIN A ON C1.CODE = A.CODE) LEFT JOIN B ON A.CODE2 = B.CODE3) LEFT JOIN A A_1 ON C1.CODEB = A_1.CODE) LEFT JOIN B B_1 ON A_1.CODE2 = B_1.CODE3 WHERE C1.NO='X'; これでいけませんか?

m-toshi
質問者

お礼

ありがとうございました。 おかげ様で解決いたしました。 今後とも、宜しくお願い致します。

その他の回答 (2)

回答No.2

SELECT C1.NO, C1.LINE, A.CODE, B.NAMEB, B_1.NAMEB FROM (((C1 LEFT JOIN A ON C1.CODE = A.CODE) LEFT JOIN B ON A.CODE2 = B.CODE3) LEFT JOIN A AS A_1 ON C1.CODEB = A_1.CODE) LEFT JOIN B AS B_1 ON A_1.CODE2 = B_1.CODE3 WHERE C1.NO='X'; でよろしいかと。

m-toshi
質問者

補足

ありがとうございます。でも、動きません・・・ 「キーワードがありません」とエラーに なってしまいます。 つづけてのご指導をお願い致します。

回答No.1

質問者さんが意図していることにあっているかどうかわからないですが、 SELECT C1.NO, C1.LINE, A.CODE, B.NAMEB FROM (C1 LEFT JOIN A ON C1.CODE = A.CODE) LEFT JOIN B ON A.CODE2 = B.CODE3 WHERE C1.NO='X'; ということではないのでしょうか。 ちなみに、ORACLEでは試してないですが、一般的なSQLなので、大丈夫だと思われます。

m-toshi
質問者

補足

ありがとうございます。とてもシンプルで解りやすいです。 ただ、1つ忘れていました。[C1]テーブルに[CODEB]もあったのです。 つまり、 [C1]テーブルに [NO](KEY) [LINE](KEY) [CODE] [CODEB]のフィールドがあります。 X 1 A-1 A-2 X 2 A-3 A-1 Y 1 A-2 A-3 となり、結果が、 [NO/LINE/CODE/NAMEB/NAMEB] X 1 A-1 NAME-B-1 NAME-B-2 X 2 A-3 (NULL) NAME-B-1 が、欲しいのです。宜しくお願い致します。

関連するQ&A