2011-07-21 6 views
2

Je commence par MYSQL. J'ai la requête suivante:Filtre MYSQL par nombre d'une autre table

SELECT answers.data. * , COUNT(answers.reports.id) AS rcount 
FROM answers.data 
LEFT JOIN answers.reports ON answers.data.id = answers.reports.answer_id 
WHERE answers.data.question='4' 
GROUP BY answers.data.id 

Il me retourner toutes les réponses à la question actuelle avec une colonne supplémentaire appelée RCount (nombre de rapports)

Je veux revenir seulement ceux qui ont moins de 3 rapports . J'ai essayé le code suivant:

SELECT answers.data. * , COUNT(answers.reports.id) AS rcount 
FROM answers.data 
LEFT JOIN answers.reports ON answers.data.id = answers.reports.answer_id 
WHERE answers.data.question='4' AND rcount < '3' 
GROUP BY answers.data.id 

mais ce n'est pas là où la nouvelle condition va. Je ne trouve pas de solution dans le manuel car je suis nouveau dans ce domaine. Merci

Répondre

6

Utilisez une clause HAVING:

SELECT answers.data.* , COUNT(answers.reports.id) AS rcount 
FROM answers.data 
LEFT JOIN answers.reports ON answers.data.id = answers.reports.answer_id 
WHERE answers.data.question='4' 
GROUP BY answers.data.id 
HAVING COUNT(answers.reports.id) < 3 
+0

Cela a fonctionné comme un charme. En venant d'autres domaines de programmation, je ne suis pas du tout habitué à la syntaxe. Je pensais tout le reste par moi-même (et le manuel) mais j'étais perdu sur celui-ci. Merci – Riskz

+1

J'aime tellement SQL. Pitty ça sort de la mode ... –

+0

Les tendances de mode vont et viennent. Des séjours classiques pour toujours. –