2013-02-18 104 views
0

我有一个查询,检查一个表的一些字段。我感兴趣的两个表是:PERSON & PERSON_ALTERNATE_ID。SQL连接查询 - 从两个表中选择

我想修改我的查询也返回存储在person_alternate_id值(如果特定的人确实有一个)

select distinct person.person_id, person_name, person_address 
from person join person_alternate_id 
on 
person.person_id=person_alternate_id.person_id 
where person.person_id 
in (10001,10002,10003); 

任何人都可以建议我怎么能做到这一点?我正在查看嵌套的选择示例,但我无法对我的查询执行适当的更改,以实现我所需的功能。目前,查询只返回PERSON表所需的字段。

回答

2

因为人可能会或可能不会有一个备用的ID,你应该使用左连接:

select person.person_id, person_name, person_address, person_alternate_id.* 
from person 
left join person_alternate_id 
on person.person_id=person_alternate_id.person_id 
where person.person_id 
in (10001,10002,10003); 
+0

谢谢,这似乎这样的伎俩。但是,它似乎忽略了这个区别,并且现在拉多个记录,我只需要10001的一个例子。现在,我得到了许多实例......你能提供建议吗? – GrumP 2013-02-18 10:51:06

+0

我不明白你为什么和你有什么重复:Persons或Person_alternate_ids。如果明显不能帮助您,请告诉我们:10001在Person Person或Person_alternate_id中多次出现? – 2013-02-18 11:32:38

+0

我明白了,谢谢。第二个表上的PERSON_ALT_ID可以具有基于另一个ID_TYPE字段的多个值。这就是为什么不同的原因......我修改了查询来显式搜索某个TYPE的ID。谢谢你的帮助。 :) – GrumP 2013-02-18 11:59:25