MYSQL - ограничение соединений - PullRequest
2 голосов
/ 01 августа 2010

Я знаю, что этот вопрос уже рассматривался здесь, но мне нужны результаты, отличные от других вопросов.

Мне нужно заказать некоторые результаты по названию учреждения, а затем по фамилии кандидатов.

SELECT DISTINCT candidates.*, histories.job_title, institutions.name
FROM candidates
JOIN histories ON histories.candidate_id = candidates.id
JOIN institutions ON histories.institution_id = institutions.id
WHERE candidates.id IN (1,3,4,6)
ORDER BY institutions.name, candidates.last_name;

Моя проблема заключается в том, что в настоящее время возвращаются все истории кандидатов, которые присоединились (есть текущие / прошлые занятия), но если я добавлю

AND histories.finish_date IS NULL

туда, где не вернутся кандидаты, у которыхистория или есть дата окончания.

Спасибо, Алекс

Подзапрос

SELECT DISTINCT candidates.*, 
   (SELECT institution_id
        FROM histories
        WHERE histories.candidate_id = candidates.id AND histories.finish_date IS NULL
        LIMIT 1) AS job_title       
   FROM candidates
  JOIN institutions ON histories.institution_id = institutions.id
WHERE candidates.id IN (1,3,4,6)

1 Ответ

0 голосов
/ 01 августа 2010

Попробуйте использовать левое соединение в таблице историй:

SELECT DISTINCT candidates.*, histories.job_title, institutions.name
FROM candidates
LEFT JOIN histories ON histories.candidate_id = candidates.id AND histories.finish_date IS NULL
JOIN institutions ON histories.institution_id = institutions.id
WHERE candidates.id IN (1,3,4,6)
ORDER BY institutions.name, candidates.last_name;

Я не могу это проверить, вам придется сделать это для меня.Должны быть возвращены все кандидаты и их истории (если они есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...