電子書籍の厳選無料作品が豊富!

ごぶさたしております。Oracle[10g]のSQL文についての
質問です。(No.???)

[A]テーブルに
[CODE](KEY) [CODE2] [NAME] のフィールドがあります。
A-1 B-1 NAME-1
A-2 B-2 NAME-2
A-3 B-3 NAME-3

[B]テーブルに
[CODE2](KEY) [NAME-B] のフィールドがあります。
B-1 NAME-B-1
B-2 NAME-B-2
B-3 NAME-B-3

[C1]テーブルに
[NO](KEY) [LINE](KEY) [CODE] のフィールドがあります。
X 1 A-1
Y 1 A-2

[C2]テーブルに
[NO](KEY) [LINE](KEY) [LINE2](KEY) [BIKO] のフィールドがあります。
X 1 1 BIKO-1
X 1 2 BIKO-2
Y 1 1 BIKO-3

結果が

[NO/LINE/LIN2/NAME-B/BIKO]
X 1 1 NAME-B-1 BIKO-1
X 1 2 NAME-B-1 BIKO-2
Y 1 1 NAME-B-2 BIKO-3

と、なる様にしたいのです。問題は、[B]テーブルです。
今まで、教えていただいた事を参考に頑張ってみましたが、
思う結果がでません。宜しくお願い致します。

A 回答 (4件)

一行目の列名記述を見直すことでちゃんと動きます。


("C2.LINE"も箇所が、"C2,LINE"になっていた)

最終的に、次のSQLでちゃんと動作確認できています。
select C2.NO,C2.LINE,C2.LINE2,B."NAME-B",C2.BIKO
from C2,C1,A,B
where
C2.NO=C1.NO and C2.LINE=C1.LINE and
C1.CODE=A.CODE and
A.CODE2=B.CODE2
;

この回答への補足

ありがとうございます。なぜ、"NAME-B"だけ、
""が必要なのか疑問ですが、動きました。

ただ、結果が0件なのです・・・
非常にわがままなのは、十分承知しております。
すみません。宜しくお願い致します。

補足日時:2005/08/09 12:01
    • good
    • 0

>なぜ、"NAME-B"だけ、""が必要なのか疑問ですが、動きました。



-を項目名に含めるので、そのような記述をしなければならなくなっています。
予約語や記号関係を項目名とするときは、ダブルコーティションによる”正規”の
列名表現を行う必要となります。

>ただ、結果が0件なのです・・・

少なくとも、R9.0.1で正しく結果を得られるSQLを載せましたので、
それで正しく動かないことは考えられません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
改めて、質問をさせて頂きますので
宜しくお願い致します。

お礼日時:2005/08/09 13:46

列名が問題あるのであれば..



select C2.NO,C2,LINE,C2.LINE2,B."NAME-B",C2.BIKO
from C2,C1,A,B
where
C2.NO=C1.NO and C2.LINE=C1.LINE and
C1.CODE=A.CODE and
A.CODE2=B.CODE2
;

で直るんじゃないかと思うのですが・・。

この回答への補足

何度もありがとうございます。
「列の定義が未確定です」のエラーに
なってしまいます。(;_;)

宜しくお願い致します。

補足日時:2005/08/08 15:30
    • good
    • 0

単純に全てのテーブルを結合するだけで良いんじゃないですか?



select C2.NO,C2,LINE,C2.LINE2,B.NAME,C2.BIKO
from C2,C1,A,B
where
C2.NO=C1.NO and C2.LINE=C1.LINE and
C1.CODE=A.CODE and
A.CODE2=B.CODE2
;

この回答への補足

ご回答をありがとうございます。
>B.NAME
で、エラーになったので、[B.NAME-B]に置き換えました。が、「"B":無効な識別子です」と
なぜか、エラーになってしまいます。

続けてのご指導をお願い致します。

補足日時:2005/08/08 10:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!