2017-05-06 11 views
1

完了したタスク= 1で完了していないタスクを完了した人のメールを検索するクエリがあります。このメールはテーブルjos_usersにあり、タスクテーブル名はキーパーソンです。 keypersonテーブルには、ユーザIDとタスクフィールド「check1」があります。mysqlの特別条件クエリ

問題は、keypersonテーブルに複数の行として表される複数のcheck1タスクがあることが問題です。それは一部のユーザーがCHECK1 = 1行を有していてもよく、CHECK1 = 0

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

よりCHECK1行は、そのクエリは、少なくとも完了したすべての人を見つけることを考慮に入れていないので、だから、このクエリでは動作しません。 1 check1タスクが必要ですが、すべてのチェック1タスクを完了したタスクを見つける必要があります。

助けてください。

+0

ノートをチェックしてみてください。 – Strawberry

+0

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

答えて

2

あなたはDISTINCTが関数ではないことを電子メールでグループ化し、その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