我将给出两个例子,第一个是有效的,第二个是我想要做的:
SELECT P.ProjName, D.update_date, SUM(E.pass), SUM(E.fail)
FROM execution AS E INNER JOIN (
daily AS D INNER JOIN project AS P ON D.project_ID = P.ID )
ON E.daily_ID = D.ID
WHERE D.project_id = 25 AND D.update_date = (
SELECT MAX(update_date) FROM daily WHERE project_id = 25; )
GROUP BY P.ProjName, D.update_date;
这对于单个项目是可以工作的。它给我提供了一个给定项目(这里是25)的最新一天的通过和失败总数。我想使用WHERE IN子句获取一组项目。例如(但不起作用):
SELECT P.ProjName, D.update_date, SUM(E.pass), SUM(E.fail)
FROM execution AS E INNER JOIN (
daily AS D INNER JOIN project AS P ON D.project_ID = P.ID )
ON E.daily_ID = D.ID
WHERE D.project_id IN (25,26,28,29,30,31)
GROUP BY P.ProjName, D.update_date
HAVING MAX(D.update_date);
这将导致每个项目的每个日期都被拉取。涉及到3个表,'project'通过'daily'相连,'daily'通过'execution'相连。因此,对于每个项目,有多个每日数据,每天都有多个执行数据。我意识到HAVING MAX可能需要比较,但是与什么比较呢?也许修改JOIN会有所帮助。
谢谢, Keith