FROM
info2 info
LEFT OUTER JOIN question_list ql
ON info.enq_no = ql.enq_no
LEFT OUTER JOIN choice_list cl
ON info.enq_no = cl.enq_no
AND ql.question_no = cl.question_no改成
from info2,question_list,choice_list
where
info.enq_no = ql.enq_no(+)
and info.enq_no = cl.enq_no(+)
AND ql.question_no = cl.question_no(+)结果出现ORA-01417: a table may be outer joined to at most one other table错误,为什么?
而SQL 89是不允许进行全外连接的。
估计是你的连接条件写的有问题,三个表只需要2个连接条件即可。
考虑一下,是不是你的连接条件改一下。
SELECT
FI.SVCID,
FI.GROUPNO,
FI.ENQUETENO,
QL.QUESTIONNO,
QL.QUESTION,
QL.QTYPE,
CL.CHOICENO,
CL.CHOICETXT,
FI.STARTDT,
FI.ENDDT
FROM
ENQFORMINFO2 FI ,ENQQUESTIONLST2 QL,ENQCHOICELST2 CL
WHERE
FI.SVCID = 'PUBFSOL_CENQ'
AND
FI.GROUPNO = 46
AND
FI.STARTDT < SYSDATE
AND
FI.ENDDT > SYSDATE
AND FI.ENQUETENO = QL.ENQUETENO(+)
AND FI.ENQUETENO = CL.ENQUETENO(+)
AND QL.QUESTIONNO = CL.QUESTIONNO(+)
你的sql和我的还不一样,你是A,B,C,B和C分别被左连到A表,而我的这个sql,左连C的时候,条件中带有了和A,B的关联条件,是不是这个导致的?在java中调用的时候没抛异常,能正常执行,但在pl/sql developer中时却报异常