gpt4 book ai didi

mysql - 如何列出未完成任务的组和数量?

转载 作者:行者123 更新时间:2023-11-29 07:03:54 25 4
gpt4 key购买 nike

我有两个数据库表:

tasks:
task_id (unique id, autoincrement)
group_id (from the next table: groups, where task belongs to)
task_name
status (if task has been completed or not)

groups:
group_id (unique id, autoincrement)
group_name

我的目标是列出所有组以及其中未完成任务的数量(任务状态 0)。我通过这个查询实现了这一点:

$sql_query = "SELECT g.id, g.name, count(g.id) as count
FROM task_groups g, tasks t
WHERE g.status = 0 AND t.group = g.id AND t.status = 0
GROUP BY g.id
ORDER BY g.id ASC";

我得到这样的结果:

Group1  3 uncompletedGroup2 13 uncompletedGroup3 30 uncompleted

但是没有列出空任务组(没有属于特定组的任何任务)。

结果应该是这样的:

Group1  3 uncompletedGroup2 13 uncompletedGroup3 30 uncompletedGroup4  0 uncompletedGroup5  0 uncompleted

我怎样才能做到这一点?

最佳答案

您走在正确的轨道上。 GROUP BY 组,但不是计算组 ID,而是尝试对未完成的任务执行 SUM,如下所示:

SELECT g.id, g.name,
SUM(IF(t.status = 0, 1, 0)) incomplete_tasks
FROM task_groups g
LEFT JOIN tasks t ON (t.group_id = g.id)
GROUP BY g.id ASC
HAVING incomplete_tasks > 0;

如果您想列出所有 任务组,请省略 HAVING 子句。

注意:我没有在您的查询中看到 g.status 的用途,并且 status 没有列为 中的列>groups 表,所以我把它从我的例子中去掉了。

关于mysql - 如何列出未完成任务的组和数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8541330/

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