Предложение WHERE в запросе LEFT JOIN - PullRequest
0 голосов
/ 29 декабря 2018

Итак, я хочу получить все позиции SSC и получить количество позиций, которые еще не заняты.Однако я как-то застрял в предложении where.

Вот мои структуры таблиц:

Position

SSC

Student

Account

А вот и мой запрос

SELECT p.position_id, a.account_id FROM positions p LEFT JOIN ssc s ON s.position_id = p.position_id AND s.removed = 0 LEFT JOIN students stud ON stud.students_id = s.students_id LEFT JOIN accounts a ON a.account_id = stud.account_id WHERE p.user_level_id = 6 AND p.removed = 0

Фактический результат таков:

Result

Ожидаемый результат для отображения только тех полей, которые имеют значение NULL в account_id.Однако, если я включу AND a.account_id = NULL в запрос, результат будет пустым.И если я когда-нибудь изменю запрос на:

SELECT p.position_id, a.account_id FROM positions p LEFT JOIN ssc s ON s.position_id = p.position_id AND s.removed = 0 LEFT JOIN students stud ON stud.students_id = s.students_id LEFT JOIN accounts a ON a.account_id = stud.account_id AND a.account_id = NULL WHERE p.user_level_id = 6 AND p.removed = 0

, тогда весь идентификатор учетной записи станет NULL

1 Ответ

0 голосов
/ 29 декабря 2018

Ни один из них = значение NULL.Используйте IS NULL.

a.account_id IS NULL

Подробнее об этом можно прочитать здесь, https://dev.mysql.com/doc/refman/8.0/en/working-with-null.html. Вы можете использовать пустые строки или значение по умолчанию 0.

.
...