2013-05-06 6 views
0

Ma table SQL "offres" contient les offres que les utilisateurs font pour les produits (ID_produit, ID_client, offre).Les résultats du regroupement SQL dans une sélection

Dans ma page d'administration, je souhaite répertorier les produits pour lesquels au moins une offre existe et afficher le nombre total d'offres existantes.

Par exemple,

PRODUCT #324  Total offers: 42 
PRODUCT #99  Total offers: 1 
etc. 

Je pense serait de combiner un SELECT DISTINCT product_ID FROM offers... Et dans une deuxième requête, à SELECT COUNT(*) FROM offers WHERE product_ID=...

Est-ce la façon la plus efficace d'y parvenir, ou est-il façon de le faire à l'intérieur d'une seule requête?

+1

Quels SGBD utilisez-vous? Postgres? Oracle? –

Répondre

2

Vous pouvez le faire dans une requête qui obtenir le nombre en regroupant par le product_id:

SELECT product_ID, COUNT(*) 
FROM offers 
GROUP BY product_ID 
+5

Une autre question où la réponse est exacte dans le titre. :) – Barmar

1

Comme bluefeet déjà répondu, vous y parvenir en simple requête en utilisant par groupe. (group by demo)

Une autre chose à mentionner est l'ordre par,

select 
    product_id as id, 
    count(*) as totals 
from 
    t 
group by product_id 
order by totals; 

Si vous voulez trier les totaux des coups, ou si vous voulez trier product_id etc.

sqlfiddle

+1

Merci pour l'info additionnelle –

Questions connexes