我正在建立一个任务系统,它有4个表:
任务
id | user_id | end_date
-------------------------
2 | 1 | 2011-02-10
用户
id | username
--------------
1 | johndoe
--------------
2 | janedoe
角色
id | role_name
--------------
1 | coordinator
和任务用户
id | task_id | user_id | role_id
---------------------------------
1 | 2 | 2 | 1
每个任务都有一个创建者(即:johndoe是task#2的所有者),并且每个任务都有多个在该任务上具有不同角色的用户,在我的示例中,“janedoe”是task#2协调器。
我一直在努力向“珍妮多”和“约翰多”展示他们有多少应该完成的任务,而我遇到了这个问题,因为“约翰多”在任务中不起作用,他只是任务的负责人。
我怎么能告诉他们两个都有一个任务要完成呢?
最佳答案
您可以通过执行LEFT JOIN
SELECT u.id, u.username,
IFNULL(t.Cnt,0) OwnCount,
IFNULL(tr.Cnt,0) RoleCount
IFNULL(t.Cnt,0) + IFNULL(tr.Cnt,0) TotalCount
FROM users u LEFT JOIN (
SELECT user_id, COUNT(*) cnt
FROM tasks
GROUP BY user_id
) t ON u.id = t.user_id
LEFT JOIN (
SELECT user_id, COUNT(*) cnt
FROM tasks_roles_users
GROUP BY user_id
) tr ON u.id = tr.user_id
WHERE t.user_id IS NOT NULL OR tr.user_id IS NOT NULL
关于php - MySQL计数并加入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4982372/