CLI描述错误:[Oracle][ODBC][Ora]ORA-00918:定义不明确的列

doinxwow  于 2023-05-06  发布在  Oracle
关注(0)|答案(1)|浏览(122)
select PR.Create_date,
       PR.CUST_APP_NO,
       PR.Cont_plan_ID,
       PL.product_name,
       mem.proposal_info_fk,
       mem.o_id,
       qa.qus_id_fk,
       qa.qus_response
from   ADMIN.t_proposal_info PR
       INNER JOIN admin.T_plan_type PL
       on replace(PR.CONT_PLAN_ID,'~',NULL)=pl.plan_code
       inner join ADMIN.t_member_info mem
       on pr.o_id=mem.proposal_info_fk
       INNER JOIN ADMIN.t_short_qus_ans QA
       on mem.proposal_info_fk=qa.proposer_id_fk`your text`
       inner join ADMIN.t_short_qus_ans QA
       on mem.o_id=qa.member_id_fk
where  pl.plan_product_type_fk='105'
and    qa.qus_id_fk in ('5','91')
and    qa.qus_response='No'
and    pr.is_cust_split='No'
and    pr.cust_renew_flag='~N'
and    pr.create_date>='01-MAY-23';`
ep6jt1vc

ep6jt1vc1#

问题是您在两个联接中使用了相同的别名。所以,错的是:

INNER JOIN ADMIN.t_short_qus_ans QA on mem.proposal_info_fk=qa.proposer_id_fkyour text 
 inner join ADMIN.t_short_qus_ans QA on mem.o_id=qa.member_id_fk

相反,它应该像下面这样:

INNER JOIN ADMIN.t_short_qus_ans QA on mem.proposal_info_fk=qa.proposer_id_fkyour text 
 inner join ADMIN.t_short_qus_ans QA2 on mem.o_id=qa2.member_id_fk

到目前为止,我还没有看到任何其他的事情,似乎对我来说不好。我的建议是:无论何时你有一个复杂的查询,从小开始,一次写一个过滤条件和一个连接,并测试它在sqldeveloper或其他Oracle IDE中的运行情况,或者最终在一些更花哨的IDE中运行,它可以在几个品牌的数据库上工作(如DBeaver或DBArtisan)。因此,您可以更快地知道何时出错,并更容易地修复错误。

相关问题