繁体   English   中英

在简单的左外部联接中使用第三个表

[英]Using a third table in simple left outer join

我有一个简单的sql很好,但我需要来自另一个表的数据并在下面出现错误:诀窍是每个people_id可能有多个program_name(我们是一家代理很多程序),我想显示全名,即alt_id信息和它们所在的程序。即使它们没有alt_id,我也要显示它们。

select b.*, c.program_name, a.full_name 
from all_clients_view a 
left outer join alt_id_view b
on a.people_id = b.people_id

***直到这里都很好。 这部分给出了错误:

Where a.people_id IN (select program_name
                      from program_enrollment_view c
                      where a.people_id = c.people_id)

错误:

无法绑定多部分标识符“ c.program_name”。

我怀疑您只是想exists

where exists (select 1
              from program_enrollment_view pev
              where a.people_id = pev.people_id
             )

比较“ people_id”和“ program_name”对我来说没有意义。

如果要返回程序名称,则需要附加join

select ac.full_name, ai.*, pev.program_name, 
from all_clients_view ac left join
     alt_id_view ai
     on ac.people_id = ai.people_id left join
     program_enrollment_view pev
     on ac.people_id = pev.people_id;

笔记:

  • 这使用有意义的表别名,而不是abc 强烈推荐!
  • 如果您希望没有匹配的行,则想left join视图program_enrollment_view
  • 因为您是从第二个表中选择* ,所以我猜想inner join更合适。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM