- ベストアンサー
Oracle[10g]のSQL文についての質問
- テーブルの作成がおかしい様でしたので、改めて質問させて下さい。
- [B]テーブルには、[CODE3](KEY) [NAMEB]のフィールドがあります。
- 結果が[NO/LINE/CODE/NAMEB] X 1 A-1 NAME-B-1となる様にしたいのですが、4行もでてしまいます。問題は、[B]テーブルです。
- みんなの回答 (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'; これでいけませんか?
その他の回答 (2)
- shoshoshosho
- ベストアンサー率52% (12/23)
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'; でよろしいかと。
補足
ありがとうございます。でも、動きません・・・ 「キーワードがありません」とエラーに なってしまいます。 つづけてのご指導をお願い致します。
- shoshoshosho
- ベストアンサー率52% (12/23)
質問者さんが意図していることにあっているかどうかわからないですが、 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なので、大丈夫だと思われます。
補足
ありがとうございます。とてもシンプルで解りやすいです。 ただ、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 が、欲しいのです。宜しくお願い致します。
お礼
ありがとうございました。 おかげ様で解決いたしました。 今後とも、宜しくお願い致します。