从同一个表中加入同一列两次时出现模棱两可的错误
Posted
技术标签:
【中文标题】从同一个表中加入同一列两次时出现模棱两可的错误【英文标题】:ambiguous error when joining same column twice from the same table 【发布时间】:2020-10-29 13:59:59 【问题描述】:我有以下查询,我需要将 account_manager 列 = 到 prod_id 以分配客户经理名称,并对 client_id = prod_id 执行相同操作以获取 producer_name。我为生产者表创建了别名,但继续得到列定义不明确的错误。
Select rg.group_number, rg.group_name, qo.quote_id, qo.effective_date, qo.quote_type, qo.hra_ind, rg.account_manager, a.name as account_manager_name, rg.client_id, name as producer_name
From qo_quote qo,
re_group rg
JOIN producer a ON a.prod_id = rg.account_manager
JOIN producer b ON b.prod_id = rg.client_id,
( select distinct a.group_number, c.prospect_nbr
from re_current_benefits a,
qo_quote b,
qo_account c
where a.quote_id = b.quote_id and b.hra_ind = 'Y' and
a.group_number = c.group_number and c.hcr_ind = '3'
) q1
Where q1.prospect_nbr = qo.prospect_nbr and
q1.group_number = rg.group_number and qo.effective_date = rg.renewal_date and
qo.quote_type = 'B' and qo.quote_expiration_ind is null and qo.hra_ind is null and
qo.mhs_lob_code not in ('DTL1', 'DTL2', 'VIS1')
【问题讨论】:
请您重写您的 SQL 以使用 ANSI SQL 联接而不是 Oracle 联接语法。旧的 Oracle 语法不被认为是好的做法,并且难以区分 JOIN 逻辑和过滤器(WHERE 子句)逻辑 在name
,name as producer_name
中缺少使用别名
【参考方案1】:
当您加入具有相同列的表时,您必须从哪个表中找到每个不明确的列,目前您缺少name
b.name as producer_name
【讨论】:
以上是关于从同一个表中加入同一列两次时出现模棱两可的错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Doctrine ORM 2 中加入类表继承时出现“主键 elementId 的缺失值”