SQL LEFT JOIN con COUNT (*) problema
Domanda
Ho la seguente query:
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
Ma ancora c'è un problema: le categorie senza prodotti in essi restituiscono itemCount = 1
invece di 0
. Come posso risolvere questo problema?
Soluzione
Hai provato COUNT(products_to_categories.categoryID) AS itemCount
? Io non sono davvero sicuro, ma vorrei pensare che forse le bugie problema nel COUNT(*)
.
Altri suggerimenti
Prova COUNT(product_name)
o qualsiasi altra cosa, invece di COUNT(*)
.
COUNT(products_to_categories.categoryID)
La richiesta di COUNT(*)
dà almeno 1 perché, dopo tutto, non vi è 1 fila. i conteggi specifici necessitano di un trattamento specifico.
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'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow