0

次の形式で 3 つのテーブルを結合しようとしています。

select * 
from A 
inner join
B (inner join (C on C.id=B.c_id))

on A.id=B.a_id;

ルックアップ テーブルを使用して結合を実行したことはありません (この場合は B)。

Oracleはエラーをスローします

ORA-00905: missing keyword
00905. 00000 -  "missing keyword"
*Cause:    
*Action:
Error at Line: 6 Column: 11

どこが間違っているのかについての洞察をいただければ幸いです。ありがとう!

4

3 に答える 3

2

次のように記述する必要があります。これはより明確です。

select * 
from A 
inner join B on A.id=b.a_id 
inner join C on C.id=B.c_id

これがステートメントの意図をどのように示しているかを確認できます (join 句は、テーブルを結合する方法について非常に明示的です) vs where 句で結合条件を表現して 2 つのテーブルを結合する (のようにwhere a.id=b.id)

于 2013-08-07T18:14:16.883 に答える
2

むしろ次のようなものを試してください

SELECT *
FROM A INNER JOIN
B ON A.id = B.a_id INNER JOIN
C ON C.id = B.c_id
于 2013-08-07T18:13:52.697 に答える
1
select * 
from A 
inner join B on A.id=B.a_id
inner join C on C.id=B.c_id
于 2013-08-07T18:15:02.000 に答える