SQL LEFT JOIN с проблемой COUNT (*)


У меня есть следующий запрос:

SELECT products_categories.categoryID, name, COUNT(*) AS itemCount
FROM products_categories
LEFT JOIN products_to_categories ON products_to_categories.categoryID = products_categories.categoryID
GROUP BY products_categories.categoryID
Но все же есть проблема: категории Без продуктов в них возвращают itemCount = 1 вместо 0. Как я могу это исправить?
4 4

4 ответа:

Вы пробовали COUNT(products_to_categories.categoryID) AS itemCount? Я не совсем уверен, но думаю, что, возможно, проблема заключается в COUNT(*).

Попробуйте COUNT(product_name) или что угодно, вместо COUNT(*).

COUNT(products_to_categories.categoryID)

Прося COUNT(*) дает вам 1 хотя бы потому, что, в конце концов, таместь 1 строка. Специфическим подсчетам требуется специфическое лечение.

SELECT products_categories.categoryID, name, COUNT(*) AS itemCount
FROM products_categories
LEFT JOIN products_to_categories ON products_to_categories.categoryID = products_categories.categoryID
GROUP BY products_categories.categoryID
WHERE itemCount <> '0'