mysql显示每行中具有两个内部联接的其他表中的行数

时间:2014-04-26 19:31:46

标签: mysql sql join count

我有三个表:tasksgroupsitems

  • 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返回所有正常值。我希望所有已删除的任务都包含每行中的项目数。

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;