Объединить две таблицы: все строки из первой с подмножеством из второй

#sql-server-2005

#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
  

что мне нужно объединить следующим образом:

Желаемые результаты (где включены только dobs с 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:

Сделайте фильтр частью условия объединения:

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

Комментарии:

1. Спасибо! Мне неловко говорить, как долго я ломал голову над этим, но простой ответ очень приветствуется!