2010-10-23 7 views
1

Comme ça:Mysql comment utiliser la valeur COUNT des lignes de la table jointe dans l'instruction WHERE?

COUNT(i.t_1) AS total_images 
WHERE total_images > 2 

génère une erreur:

Unknown column "total_images" in where clause 

Si cette façon:

WHERE COUNT(i.t_1) > 2 

Lance une erreur:

Invalid use of group function 

Comment le faire droit façon?

Si besoin je posterai une déclaration complète.

La signification de cette requête pour choisir la 1 annonce avec le plus de photos dans la table jointe (images).

Merci;)

Répondre

1

La clause WHERE ne peut être utilisé pour filtrer les lignes de la table/table dérivée sur une base rangée par rangée. Pour filtrer en fonction des résultats d'une agrégation dont vous avez besoin d'utiliser PRESENTANT au lieu de OÙ:

HAVING COUNT(i.t_1) > 2 
+0

Merci, ça fonctionne, je vais devoir lire l'homme d'avoir;) approuvera après 10 min – Somebody

+0

@Beck: Regardez cette question connexe: http://stackoverflow.com/questions/287474/ sql-whats-la-différence-entre-avoir-et-où - * SQL: Quelle est la différence entre HAVING et WHERE? * –

0

Si vous êtes vraiment à la recherche juste pour le « 1 annonce avec le plus de photos », vous voudrez peut-être quelque chose comme:

select i.t_1,count(*) n ... group by i.t_1 order by n desc limit 1

Questions connexes