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

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

4 голосов
/ 15 августа 2010

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

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 голосов
/ 15 августа 2010

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

4 голосов
/ 15 августа 2010

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

1 голос
/ 15 августа 2010
COUNT(products_to_categories.categoryID)

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

0 голосов
/ 15 августа 2010
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'
...