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

标签 mysql sql join count

我有三个表:tasks , groupsitems .

  • tasks列:task_id、描述、组(INT,用组表中的名称替换 id)、优先级、截止日期、日期、已删除(0 或 1);
  • groups列:id、名称;​​
  • items列:id、描述、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返回一切正常。我想获取所有已删除的任务以及每行中的项目数。

最佳答案

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; 

关于mysql 显示每行中有两个内连接的其他表的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315572/

相关文章:

sql - 大型数据库查询 : optimisation

mysql - 我想连接数据库中的两个表

android - 在Android中即时从MySQL获取数据的有效方法?

sql - 在一列中存储多个标签

mysql - 连接 3 个表

sql - 如何在oracle中为非空值分配等级

mysql - 跨连接表求和

来自 JOIN 子句的 MySQL LIKE 和 GROUP_CONCAT 仅从连接表返回一行

mysql - 删除 SQL 语法错误

正在处理的 MySQL 异常处理程序访问异常