2009-09-08 8 views
1

J'ai une requête similaire à ce qui suit:Count() en utilisant la clause Where et Left Rejoignez

SELECT users.id FROM utilisateurs LEFT JOIN ventes sur installations.customer = users.id

Ce que je voudrais dire est quelque chose comme "WHERE count (sales.id)> 4" - ce qui signifie que si l'utilisateur a plus de 4 assoc des ventes avec eux. Je ne sais pas si je vais sur ce dans le mauvais sens ou non si

Répondre

4
select 
    users.id 

from users 

join sales on /* your join condition here */ 

group by users.id 

having count(sales.id) > 4 

Ce groupera toutes les ventes par utilisateur, alors ne retourne que les ventes qui ont plus de quatre enregistrements de la table sales.

Je n'ai pas dupliqué votre condition de jointure ci-dessus, car cela ne semble pas très logique, car il fait référence à des tables qui ne figurent nulle part dans votre requête.

+0

Oh ouais je voulais rejoindre les ventes à la fois, cela fonctionne bien merci! – kilrizzy

0

Je pense que vous voulez quelque chose de similaire à ce

select users.id, count(sales.id) 
from users 
LEFT JOIN sales ON installations.customer = users.id 
group by users.id 
having count(Sales.id) > 5 
0

Vous devez utiliser « groupe par » et la clause « ayant ».

Essayez

SELECT users.id FROM users LEFT JOIN sales ON installations.customer = users.id GROUP BY users.id HAVING count(sale.id) > 4 

Voir ici pour plus d'GROUPBY on W2C

Questions connexes