sql:只显示最大计数(php)

时间:2015-03-16 10:05:25

标签: php html sql count max

我一直在浏览各种示例,但似乎无法得到正确的答案。我想要到达的是显示: staffID,表人员姓名 总数没有。员工参与的任务来自StaffWorksInTask (仅限参与大多数任务的人员)

员工:staffID,姓名

StaffWorksInTask:staffID,taskID,projectID

我作为第一步所做的是忽略过滤器部分:

SELECT COUNT(W.staffID), S.staffID, S.name 
FROM Staff S, StaffWorksInTask W 
WHERE S.staffID = W.staffID 
GROUP BY W.staffID

但是现在我完全陷入了这样的状况,即只能让列表显示涉及最多任务的员工(这样,其他员工都没有显示)。 请帮忙!!非常感谢!!

3 个答案:

答案 0 :(得分:1)

您需要限制结果

SELECT COUNT(W.staffID) as total, S.staffID, S.name FROM Staff S, StaffWorksInTask WHERE S.staffID = W.staffID GROUP BY S.name,S.staffID ORDER BY total DESC LIMIT 1

答案 1 :(得分:1)

据我了解,您只希望看到一个最佳结果?

您可以执行以下操作:

SELECT COUNT(W.staffID) as counter, S.staffID, S.name 
FROM Staff S, StaffWorksInTask W 
WHERE S.staffID = W.staffID 
GROUP BY S.staffID 
ORDER BY counter DESC
LIMIT 0, 1

这将只显示一名员工 - 任务最多的员工

ORDER BY子句按任务计数降序对结果进行排序,

LIMIT子句确保您只看到1个结果(从第0行开始)

答案 2 :(得分:0)

正如@jarlh所说,你已经将你的分组从前到后。

SELECT TOP 1 COUNT(W.staffID) as c, S.staffID, S.name 
FROM Staff S, StaffWorksInTask W 
WHERE S.staffID = W.staffID 
GROUP BY S.staffID, S.name
ORDER BY c DESC

确切的语法可能会有所不同 - 您没有指定使用的数据库平台。