gpt4 book ai didi

php - MySQL计数和加入

转载 作者:行者123 更新时间:2023-11-29 02:36:02 24 4
gpt4 key购买 nike

我正在构建一个包含 4 个表的任务系统:

任务

id | user_id | end_date
-------------------------
2 | 1 | 2011-02-10

用户

id | username
--------------
1 | johndoe
--------------
2 | janedoe

角色

id | role_name
--------------
1 | coordinator

和 tasks_roles_users

id | task_id | user_id | role_id
---------------------------------
1 | 2 | 2 | 1

每个任务都有一个创建者(即:johndoe 是任务 #2 的所有者),每个任务都有几个用户,在该任务中具有不同的角色,在我的示例中,“janedoe”是任务 #2 的协调员。我一直试图向“janedoe”和“johndoe”展示他们有多少到期任务,我遇到了这个问题,因为“johndoe”在任务中没有角色,他只是任务所有者。那么我如何告诉他们有 1 项任务到期?

最佳答案

您可以通过执行 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com