Souvent, vous devez afficher une liste d'éléments de base de données et certains nombres agrégés concernant chaque élément. Par exemple, lorsque vous tapez le texte du titre sur Dépassement de pile, la liste des questions connexes s'affiche. La liste montre les titres des entrées liées et le nombre agrégé unique de la quantité de réponses pour chaque titre.Requête: comptez plusieurs agrégats par élément
J'ai un problème similaire mais j'ai besoin de plusieurs agrégats. Je voudrais afficher une liste d'éléments dans l'un des 3 formats en fonction des options utilisateur:
- Mon élément de nom (15 total, 13 appartenant à moi)
- Nom de mon article (15 au total)
- Mon point de nom (13 appartenant à moi)
Ma base de données est:
- articles: Itemid, ITEMNAME, OWNERID
- catégories: catId, catName
- carte: mapId, itemId, catId
La requête ci-dessous obtient: nom de la catégorie, le nombre de poste ids par catégorie
SELECT
categories.catName,
COUNT(map.itemId) AS item_count
FROM categories
LEFT JOIN map
ON categories.catId = map.catId
GROUP BY categories.catName
Celui-ci obtient: nom de la catégorie, nombre d'identifiants d'article par catégorie pour ce propriétaire uniquement
SELECT categories.catName,
COUNT(map.itemId) AS owner_item_count
FROM categories
LEFT JOIN map
ON categories.catId = map.catId
LEFT JOIN items
ON items.itemId = map.itemId
WHERE owner = @ownerId
GROUP BY categories.catId
Mais comment les obtenir en même temps dans une seule requête? I.e .: nom de la catégorie, nombre d'ID d'article par catégorie, nombre d'ID d'article par catégorie pour ce propriétaire uniquement
Bonus. Comment puis-je récupérer uniquement si catId compte! = 0 pour l'un de ces? En essayant « OÙ ITEM_COUNT <> 0 » Je reçois:
MySQL said: Documentation
#1054 - Unknown column 'rid_count' in 'where clause'