完成的任務,這些都是我的表:SQL查詢來標記從一個特定的用戶
表任務
id label
----------
1 Task 1
2 Task 2
3 Task 3
4 Task 4
5 Task 5
6 Task 6
7 Task 7
7 Task 8
表user_tasks
id id_user id_task
------------------
1 1 1
2 1 2
3 1 4
4 2 1
5 3 1
我有這個疑問,我認爲是工作:
SELECT t.id, t.label as text, IF(u.id_user IS NULL, 0, 1) as done
FROM tasks AS t
LEFT JOIN user_tasks AS u ON t.id = u.id_task
WHERE u.id_user = 1
OR u.id_user IS NULL
ORDER BY id DESC
所以,如果我運行該查詢,我得到這個成功的響應:
id text done
----------------
8 Task 8 0
7 Task 7 0
6 Task 6 0
5 Task 5 0
4 Task 4 1
3 Task 3 0
2 Task 2 1
1 Task 1 1
但如果我把另一個用戶ID不具有任何的任務尚未完成,例如像5我得到這樣的結果:
id text done
----------------
8 Task 8 0
7 Task 7 0
6 Task 6 0
5 Task 5 0
3 Task 3 0
因此,所有的任務,減去已經爲user_tasks表上的不同用戶設置的任務。
我在做什麼錯? 謝謝!
你使用MySQL或MS SQL Server刪除
WHERE
條款(包括u.id_user IS NULL
。)? (不要標記沒有涉及的產品。) – jarlhMySql,我沒有閱讀它指定它只是MS的sql服務器描述。我刪除它。對不起,關於該 – Jan
如果你移動'u.id_user = 1'到'ON'子句,你可以刪除'WHERE'子句(包括'u.id_user IS NULL') – jarlh