2010-11-08 14 views
0

Je connais l'utilisation basique de COUNT (*) et je me demande si je peux l'utiliser ou une autre fonction pour obtenir le résultat suivant.Comment compter les lignes dans MySQL?

J'ai une table avec les gens et les produits qu'ils ont achetés (product_id _). J'ai une deuxième table qui mappe chaque product_code à un seul product_category.

L'utilisation d'un SELECT simple, je peux combiner les deux tables pour obtenir:

first last product_code product_category 
John BGood 100   Food 
John BGood 29   Beverage 
John BGood 30   Beverage 
Rita Black 25   Fashion 
Betty Rock 36   Electronics 
Betty Rock 72   Food 
Betty Rock 100   Food 
Betty Rock 36   Electronics 

Mais ce que je voudrais est de compter pour chaque personne le nombre de produits qu'elle a acheté dans chaque catégorie. product_category est une énumération avec 5 valeurs possibles (les quatre ci-dessus et Other). Je voudrais avoir une table comme:

first last product_category count 
John BGood Food    1 
John BGood Beverage   2 
John BGood Fashion   0 
John BGood Electronics  0 
John BGood Other   0 
Betty ... 

Répondre

0
SELECT first, last, product_category, COUNT(product_code) 
FROM <table> 
ORDER BY last, first 
GROUP BY first, last, product_category 
0

Essayez cette requête

SELECT first, last, product_category, count(product_category) 
FROM <table_name> 
GROUP BY product_category 
+0

Je pense que vous devez regrouper par 'first' et' last' aussi parce que vous ne voulez pas agréger sur le total de toutes les catégories, mais sur toutes les catégories de la personne correspondante. – Flinsch

0

Append GROUP BY person_id, product_category à votre SELECT.