加入两个表:第一个中的所有行和第二个中的子集

时间:2011-11-09 15:11:21

标签: sql-server-2005

这应该很简单,但无论我尝试什么,我都无法得到我想要的数据...... 我有两张桌子:

依赖d

empID  relID      dob
100     1     8/8/1988
100     2     1/1/2001
200     1     9/9/1989

员工e

empID
100
200
300

我需要像这样加入:

期望的结果(其中只包含relID = 1的数据包)

e.empID  d.dob
100     8/8/1988
200     9/9/1989
300     NULL

无论我使用哪个连接,我最终只得到相交的记录(其中empID依赖于relID = 1的记录),如下所示:

实际结果(请参阅下面的查询)

e.empID  d.dob
100     8/8/1988
200     9/9/1989


SELECT e.empID, d.dob 
FROM employee AS e LEFT OUTER JOIN dependent AS d ON e.empID = d.empID
WHERE (d.relID = 1)

我错过了什么/做错了什么?

感谢您的关注!

1 个答案:

答案 0 :(得分:2)

使过滤器成为连接条件的一部分:

SELECT e.empID, d.dob 
FROM employee AS e 
LEFT OUTER JOIN dependent AS d 
ON e.empID = d.empID
AND d.relID = 1