ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3920225 SQL 外部結合についての質問
質問者:gogoogoo11 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 (+)
困り度:
  • すぐに回答を!
質問投稿日時:
08/04/03 23:46
最新から表示回答順に表示

回答

ANo.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が主)
回答者:3rd_001
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/04/04 13:03
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 お使いのオラクルのバージョンは?また、エラーメッセージは?
ORACLE9iR2ではエラーにはなりませんが。
回答者:nora1962
種類:補足要求
どんな人:一般人
自信:参考意見
回答日時:
08/04/04 10:58
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示