Вопрос по объединению, где один столбец с одной стороны равен нулю
У меня есть две таблицы, где хранятся кандидаты и их оценки. Простое объединение может получить всех кандидатов и их оценки путем сопоставления идентификаторов и т. Д.
например:
Alan C
George A
и т.д.. Однако:
Nina
Оценка для Нины нулевая, потому что она не сдала экзамен.
Как я могу получить вывод, как показано ниже?
Alan C
George A
Nina
Так что все равно получите Нину, хотя она не сдала экзамен. Я пробовал нулевые проверки, затем что-то выполнял и т. Д.
Спасибо
3 ответа
Вы хотите использовать левое соединение.
select c.name, coalesce(g.grade,'')
from candidate c
left join grade g
on c.candidate_id = g.candidate_id
Вам нужно использовать left join
, Например:
select c.name, g.grade
from candidates c
left join grades g on g.candidateid=c.id
В левом соединении всегда перечислены все строки на "левой" стороне соединения - в данном случае кандидаты. В строках, где кандидат не имеет записи в таблице оценок, все столбцы, заполненные из этой таблицы, будут нулевыми.