#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. Спасибо! Мне неловко говорить, как долго я ломал голову над этим, но простой ответ очень приветствуется!