2017-02-27 27 views
0

をループの集約されたリストを得る:(行ってID、tasklist_id、)SQL、私は2つのテーブル持っている代わりに

  1. タスクリスト(ID、行わ)
  2. をタスク

今私が見つけたいです0に設定されたすべてのタスクリストとそのすべてのタスクが1に設定されているので、tasklistを1に設定することもできます。

私はそれぞれのリスト1を通過するとき1でそれを行う方法を知っている:

SELECT COUNT(done) 
FROM tasks 
WHERE done != 1 
AND tasklist_id = 13; 

リスト13の全てのタスクが完了している場合、これはチェックしますが、私は私の方法でそれを持ってしたいと思います上記のクエリのカウントが0であるすべてのリストを表示する結果を取得します。

EDIT:DB = MySQLの

サンプルデータ:

タスクリスト:

id, done 
1, 0 
2, 0 
3, 0 
4, 1 

タスク:

id, done, tasklist_id 
1, 1, 1 
2, 0, 1 
3, 1, 2 
4, 1, 2 
5, 1, 3 
6, 1, 4 

期待される結果:

tasklist_id 
2 
3 

タスクnrが1です。 2(リスト1に属する)はまだ実行されておらず、リストはすでにdoneに設定されているので、4も含まないようにしてください。

+1

を経由して、このチェックを実装するためにあなたは言った:第3回である3つのテーブルを、? – McNets

+1

いくつかのサンプルテーブルデータと期待される結果、および書式付きテキストを追加します。 – jarlh

+0

@a_horse_with_no_name mysql – Chris

答えて

0

使用not exists何の未完のタスクが存在しないことを確認する。また

select id from tasklists tl where done = 0 and not exists (
    select * from tasks where tasklist_id = tl.id and done = 0 
) 

が、それはおそらく良いアイデアUpdate After triggers

関連する問題