从同一个表中加入同一列两次时出现模棱两可的错误

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 子句)逻辑 namename as producer_name 中缺少使用别名 【参考方案1】:

当您加入具有相同列的表时,您必须从哪个表中找到每个不明确的列,目前您缺少name

b.name as producer_name

【讨论】:

以上是关于从同一个表中加入同一列两次时出现模棱两可的错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Doctrine ORM 2 中加入类表继承时出现“主键 elementId 的缺失值”

选择同一列两次,但条件不同

在一个查询中两次从同一个表中提取时出现问题

在同一活动工作簿中从一个工作表复制和粘贴到另一个工作表时出现错误 1004

在Python中加载DLL时出现Windows错误1114

如何根据另一列的条件查询同一列两次?