Вопрос по объединению, где один столбец с одной стороны равен нулю - PullRequest
2 голосов
/ 25 февраля 2011

У меня есть две таблицы, где хранятся кандидаты и их оценки.Простое объединение может получить всех кандидатов и их оценки путем сопоставления идентификаторов и т. Д.

например:

Alan    C
George  A

и т. Д. Однако:

Nina

Оценкапотому что Нина - ноль, потому что она не сдала экзамен.

Как я могу получить вывод, подобный следующему?

Alan   C
George A
Nina

Так что все равно получите Нину, даже если она не сдала экзамен.Я пробовал нулевые проверки, затем что-то выполнял и т. Д.

Спасибо

Ответы [ 3 ]

7 голосов
/ 25 февраля 2011

Вы хотите использовать левое соединение.

select c.name, coalesce(g.grade,'')
    from candidate c
        left join grade g
            on c.candidate_id = g.candidate_id
1 голос
/ 25 февраля 2011

Для этого нужно использовать левое соединение.

1 голос
/ 25 февраля 2011

Вам нужно использовать left join.Например:

 select c.name, g.grade
 from candidates c
 left join grades g on g.candidateid=c.id

В левом соединении всегда перечисляются все строки на «левой» стороне соединения - в данном случае кандидаты.В строках, в которых у кандидата нет записи в таблице оценок, все столбцы, заполненные из этой таблицы, будут нулевыми.

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