2012-03-20 5 views
0

Je dois trouver tous les clients qui ont au moins 1 enregistrement de circulation. Voici ce que j'ai actuellement, mais il ne trouve qu'un résultat. Qu'est-ce que je fais mal? Je n'ai pas donné les structures de la table puisque je pensais que ce n'était pas nécessaire pour la solution. Si elle est nécessaire, laissez-moi savoir et je vais essayer de l'ajouter à la questiontable join avec count() condition

Répondre

4

Que diriez-vous:

SELECT * FROM patrons 
WHERE EXISTS (SELECT 1 FROM circulations 
       WHERE circulations.patron_id = patrons.id) 
+0

J'aime ça parce que ça ne groupe pas les clients. Existe-t-il un moyen de connaître le nombre d'enregistrements de circulation pour chaque client dans la même requête? – LordZardeck

+0

Bien sûr, mais c'est une question différente, alors demandez-en une autre; C'était aussi une bonne question et il y a de bonnes réponses, alors ne changez pas. – SingleNegationElimination

3

Ce qui suit devrait fonctionner:

SELECT * 
FROM patrons 
    INNER JOIN circulations on circulations.patron_id = patrons.id 
GROUP BY patrons.id 
+0

Cela devrait le faire, mais * uniquement * pour MySQL. D'autres bases de données * reaaaaaly * détestent cette construction. Pour ceux-là, vous devrez épeler chaque colonne de 'patrons 'dans le groupe, ou faire une sous-requête sur juste' patrons.id' et joindre * that * à la table 'partrons' dans la requête externe. +1 de toute façon ... – SingleNegationElimination

0

un coup d'oeil à mon exemple:

Supposed PatronName est la colonne de votre table de clients.

SELECT PatronName,COUNT(circulations.id) as CountCirculation 
FROM patrons 
    INNER JOIN circulations on circulations.patron_id = patrons.id 
group by PatronName 
HAVING COUNT(circulations.id) > 0 

Cordialement

0

Try ...

select * 
from patrons p 
left join circulation c on c.patron_id = p.id 
where not c.patron_id is null