Уважаемые, помогите разобраться.
У меня в базе есть отношение таблиц многие-ко-многим (рис. 1). Так вот, с помощью внешнего левого соединения хотел бы вытащить людей (таблица PERSON), связанных (и не связанных) с определённой работой.
Для этого составляю запрос (выбираем людей, занимающихся вязанием):
Код: Выделить всё
SELECT
a.id_person,
a.vc_person,
b.id_make
FROM
person a LEFT JOIN make b ON
a.id_person=b.id_person
WHERE
b.id_work=1
В результате получается набор данных, состоящих из 4-ёх строк (см. рисунок). Почему нет ещё одной строки (должен быть Дмитриев, а в столбце id_wok должно по идее стоять null)?
Требуемый набор данных мне удалось получить с помощью подзапроса (см. рисунк):
Код: Выделить всё
SELECT
a.id_person,
a.vc_person,
(SELECT b.id_make
FROM make b
WHERE a.id_person=b.id_person and b.id_work=1)
FROM
person a
Как всё-таки получить требуемый набор данных?
Почему не работает левое внешнее соединение?