2017-02-27 73 views
0

聚集列表我有兩個表:SQL,獲得的,而不是循環

  1. 任務列表(ID,完成)
  2. 任務(ID,tasklist_id,完成)

現在我想找到所有已完成設置爲0的任務列表以及所有任務已完成設置爲1的任務列表,所以我可以將任務列表設置爲1。

我知道該怎麼做時,我通過每個列表一個接一個:

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

此檢查列表13的所有任務都做了,但我想有它的方式,我得到一個結果,顯示所有上面查詢的計數爲0的列表。

編輯: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 

它不應該包括1,因爲任務nr。 2(屬於列表1)還沒有完成,它也不應該包含4,因爲列表已經設置完成。

+1

這個檢查你說: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