我有三个表:tasks
,groups
和items
。
tasks
列:task_id,description,group(INT,将id替换为组表中的名称),优先级,截止日期,日期,删除(0或1); groups
列:id,name; items
列:id,description,task_id; 例如:
tasks
表:
1|bla-bla|group1|high|2|2014-04-15 18:09:18|NULL|0
2|bla-bla|group1|low |1|2014-05-15 18:09:18|NULL|1
groups
表:
1|group1
items
表:
1|item1|1
2|item2|1
3|item3|2
和我的sql:
SELECT tasks.task_id,
tasks.description,
groups.name,
tasks.priority,
COUNT(items.id),
tasks.date,
tasks.deadline,
tasks.deleted
FROM tasks
INNER JOIN items
ON items.task_id = tasks.task_id
INNER JOIN groups
ON groups.id = tasks.group
WHERE tasks.deleted = 1
GROUP BY tasks.task_id;
这将返回空表,但如果tasks.deleted <> 1
返回所有正常值。我希望所有已删除的任务都包含每行中的项目数。
答案 0 :(得分:0)
groups
表的加入位于name
,而不是id
。您还在查询中有一个名为test
的表别名,似乎没有定义。试试这个:
SELECT t.task_id, t.description, g.name, t.priority,
COUNT(i.id), t.date, t.deadline, t.deleted
FROM tasks t
INNER JOIN items i
ON i.task_id = t.task_id
INNER JOIN groups g
ON g.name = t.group
WHERE t.deleted = 1
GROUP BY t.task_id;