Левые внешние объединения должны возвращать хотя бы одну строку из таблицы T1, если это соответствует условиям. Но что, если левое внешнее объединение успешно выполнит соединение, то обнаружит, что другой критерий не удовлетворен? Есть ли способ получить запрос для возврата строки со значениями T1 и значениями T2, установленными в NULL?
Вот конкретный запрос, в котором я пытаюсь вернуть список кандидатов, и поддержка пользователем этих кандидатов, ЕСЛИ такая поддержка существует.
SELECT c.id, c.name, s.support
FROM candidates c
LEFT JOIN support s on s.candidate_id = c.id
WHERE c.office_id = 5059
AND c.election_id = 92
AND (s.user_id = 2 OR s.user_id IS NULL) --This line seems like the problem
ORDER BY c.last_name, c.name
Запрос объединяет кандидатов и таблицу поддержки, но обнаруживает, что это другой пользователь поддержал этого кандидата (скажем, user_id = 3). Затем кандидат полностью исчезает из набора результатов.