Поскольку вы используете LEFT JOIN, ссылки на таблицу, определенную в LEFT JOIN, могут быть нулевыми.Это означает, что вам нужно преобразовать это значение NULL в ноль (в данном случае):
SELECT oe.ethnicity_name,
COALESCE(COUNT(i.ethnicity_id), 0) AS count
FROM OPTIONS_ETHNICITY oe
LEFT JOIN INQUIRIES i ON i.ethnicity_id = oe.ethnicity_id
GROUP BY oe.ethnicity_id
В этом примере используется COALESCE , стандартное средство ANSI для обработки значений NULL.Он вернет первое ненулевое значение, но если ничего не может быть найдено, он вернет ноль. IFNULL является допустимой альтернативой для MySQL, но она не переносима на другие базы данных, в то время как COALESCE имеет значение.
В реальной таблице базы данных есть некоторые записи взапрашивает таблицу, где ethity_id равен NULL, т.е. этническая принадлежность не была записана.Любая идея о том, как получить эти нулевые значения для подсчета, чтобы они могли быть показаны?
Я думаю, я понимаю проблему, с которой вы сталкиваетесь:
SELECT oe.ethnicity_name,
COALESCE(COUNT(i.ethnicity_id), 0) AS count
FROM (SELECT t.ethnicity_name,
t.ethnicity_id
FROM OPTIONS_ETHNICITY t
UNION ALL
SELECT 'NULL placeholder' AS ethnicity_name,
NULL AS ethnicity_id) oe
LEFT JOIN INQUIRIES i ON i.ethnicity_id = oe.ethnicity_id
GROUP BY oe.ethnicity_id
Это будетПодберите все экземпляры NULL ethncity_id, но он приписывает счет группе NULL.IE:
ethnicity_name | COUNT
------------------------
White | 3
Hispanic | 2
NULL placeholder | ?