2017-05-06 3 views
1

Ich habe eine Abfrage, die für E-Mails von Menschen sieht, die eine Aufgabe erledigt hat, wo Aufgaben abgeschlossen = 1 und nicht abgeschlossen = 0. Die E-Mail ist in Tabelle jos_users und die Aufgaben Tabellenname ist keyperson. Die Keyperson-Tabelle hat ein Benutzer-ID- und Aufgabenfeld mit dem Titel "check1".spezielle Bedingungsabfrage für mysql

Das Problem ist, dass einige Nutzer mehr als eine check1 Aufgabe haben, die als mehrere Zeilen in der keyperson Tabelle dargestellt. Also diese Abfrage funktioniert nicht, da es nicht in Betracht zieht, dass einige Benutzer eine Zeile haben, in dem check1 = 1 und mehr check1 Zeilen, in denen check1 = 0.

select DISTINCT(u.email) as email 
from jos_users u, keyperson k 
where k.kp1 = u.id and k.check1 = 1 

Diese Abfrage wird jeder finden, die zumindest abgeschlossen 1 check1 Aufgabe, aber ich muss diejenigen finden, die alle ihre check1 Aufgaben abgeschlossen haben.

Jede Hilfe wird geschätzt.

+0

Hinweis Überprüfung, dass DISTINCT nicht eine Funktion ist. – Strawberry

+0

Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql- Abfrage – Strawberry

Antwort

2

können Sie versuchen, per E-Mail Gruppierung und dass max(check) = min(check) = 1

select u.email 
from jos_users u join keyperson k on k.kp1 = u.id 
group by u.email 
having max(k.check1) = 1 and min(k.check1) = 1 
Verwandte Themen