2013-10-07 34 views
0

感谢大家,让我这么多!下面的工作,但我不知道如何返回多个行,包括所有当前的列名称。我知道当前语句写入的方式,它是SUPPOSED只返回一行。然而,我已经尝试了几个子查询示例,但我的总和列总是被排除在结果之外。任何帮助将是真棒和谢谢。MySQL返回具有多个连接和多个总和的多行

SELECT 
club.id, 
club.name, 
club.status, 
users.firstname, 
users.lastname, 
users.rights, 
SUM(job.status > '0') AS total, 
SUM(job.status = '1') AS incomplete, 
SUM(job.status = '2') AS pending, 
SUM(job.status = '3') AS live, 
SUM(job.status = '4') AS closed 
FROM club 
LEFT JOIN surveys 
ON job.club_id = club.id 
LEFT JOIN users 
ON users.id = job.users_id 
WHERE job.status > 0 
+0

我不明白你的问题。你期望看到什么与你实际看到的是什么? – miyasudokoro

+0

多行,我无法弄清楚如何做一个子查询,包括总和列(即总计,不完整,挂起,活,关闭)。我可以用上面的所有数据获得单行,但是当我尝试格式化为子查询时,我得到多行但没有(总数,不完整,挂起,活,关闭)。 – MichaelM

回答

0

我不完全确定你要做什么,但这里有一个基本问题:你没有GROUP BY语句。当你使用像SUM这样的分组函数时,它会告诉mysql你想把结果分组在一起。如果省略GROUP BY,它会将所有内容分组到一行中。如果你想有每个用户一个行(我假设是这样,因为你选择自己的名字),你应该说

GROUP BY users.id 

在查询结束。

如果这没有得到您要找的结果,请发表您使用假数据的结果示例,我可以给您一个更详细的答案。

+0

WOW我现在觉得自己有多愚蠢,GROUP BY就是答案。谢谢一堆。显然,我陷入了长期看问题的陷阱,我忽略了本该显而易见的事情。 – MichaelM