アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQLの外部結合についての質問です。
今テーブルA,B,Cがあるとします。
AはBに対して外部結合。BはCに対して外部結合
というようにする事は出来ますでしょうか。
SQLを実行してもエラーになります

(例)
select A.* from A,B,c
where
A.項目1 = B.項目1 (+) and
B.項目2 = C.項目2 (+)

A 回答 (2件)

以下のような結合ならエラーになります。


 AとBを外部結合(Aが主)
 BとCを外部結合(Cが主)

SQL> l
select a.ename
from emp a,
emp b,
dept c
where a.empno = b.empno(+)
and c.deptno = b.deptno(+)
;
SQL> /
where a.empno = b.empno(+)
*
行5でエラーが発生しました。:
ORA-01417: 表が少なくとも1つの他の表に外部結合されている可能性があります。

どうしてもやりたい場合はサブクエリにするとか、Viewにするとか
すればよいです。

SQL> l
select a.ename
from emp a,
(select b.empno,c.deptno
from emp b,
dept c
where c.deptno = b.deptno(+)
) x
where a.empno = x.empno(+)
;

SQL> /
ENAME
--------------------
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
KING
TURNER
JAMES
FORD
MILLER

ちなみに、例で出された以下の結合ならエラーになりません。
 AとBを外部結合(Aが主)
 BとCを外部結合(Bが主)
    • good
    • 1

お使いのオラクルのバージョンは?また、エラーメッセージは?


ORACLE9iR2ではエラーにはなりませんが。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す