Левые внешние соединения, которые не возвращают все строки из T1 - PullRequest
1 голос
/ 13 марта 2010

Левые внешние объединения должны возвращать хотя бы одну строку из таблицы 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). Затем кандидат полностью исчезает из набора результатов.

1 Ответ

2 голосов
/ 13 марта 2010

Не можете ли вы переместить условие из условия where в предложение join?

LEFT JOIN support s on s.candidate_id=c.id and s.user_id = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...