2010-04-03 7 views
1

J'ai cette requête:MySQL - Sélection de lignes avec un nombre minimum de occurences

SELECT DISTINCT brand_name FROM masterdata WHERE in_stock = '1' ORDER BY brand_name 

Il fonctionne bien, sauf que je reçois beaucoup trop de résultats. Comment puis-je limiter cela de telle sorte que, plutôt que de simplement rechercher des entrées distinctes, il ne me donnera que des entrées distinctes qui existent au moins 3 fois (par exemple)?

En fait, si la colonne avait ces données ...

brand_name 
========== 
apple 
banana 
apple 
apple 
orange 
banana 
orange 
orange 

... ma requête actuelle retournerait "pomme, banane, orange". Comment est-ce que je l'obtiens tel qu'il ne renvoie que "pomme, orange" (ignorant la banane parce qu'il a moins de trois occurrences)? J'utilise PHP pour construire la requête, si cela est important.

Merci!

Répondre

3

Quelque chose comme ça (off-the-brassard et non testé):

SELECT brand_name 
    FROM masterdata 
WHERE in_stock = '1' 
GROUP BY brand_name 
HAVING COUNT(*) >= 3 
ORDER BY brand_name 
+0

C'est excellente - cela fonctionne, merci! Juste une autre question si vous seriez si gentil: quelle serait ma requête si je voulais montrer les 15 premières entrées dans brand_name avec la fréquence la plus élevée, mais classés par ordre alphabétique (plutôt que par fréquence)? Donc maintenant, je ne définis pas le nombre minimum d'occurrences, mais plutôt les 15 premières entrées avec le plus grand nombre d'occurrences. –

+0

@RC: cela devrait être une nouvelle question. – outis

Questions connexes