MYSQL - 没有获得正确的数据MAX

时间:2013-04-26 13:21:50

标签: mysql

我有一份包含代理商的案例清单。所有机构都包含分配有状态的任务。 0 =完成,1 =正在进行,2 =过期。

我试图在所有情况下显示是否有任何逾期的任务。目前,我的查询显示状态为1,即使有一些任务已过期。

SQL FIDDLE HERE http://sqlfiddle.com/#!2/a4394/3

我不知道需要更改什么才能提取正确的数据。有什么想法吗?

非常感谢任何帮助!!

3 个答案:

答案 0 :(得分:1)

您的查询是正确的,问题是您从多个表中获取信息但是,所有这些表中没有足够的记录,基本上您的cases_agency_association表中的ID最多为6,以及cases_task_association表中status为2的记录,所有记录的ID都大于6 ...

答案 1 :(得分:1)

忽略您正在编写仅限MySQL SELECT,您的联接是错误的;当您真正想要cc.case_ID时,您正在caa.ID加入caa.case_ID

SELECT cc . * , a.ID, MAX(cta.status) AS current_status
FROM cases_complete cc, agencies a, cases_agency_association caa,
  cases_task_association cta
WHERE cc.case_ID = caa.case_ID
AND caa.agency_ID = a.ID
AND cta.agency_association_ID = caa.ID
GROUP BY cc.case_ID

然而,@ meewoK的方法以及关于不滥用GROUP BY的评论都值得思考,从提出更清晰,更易维护的内容,以及希望更便携/未来兼容的角度来看。 / p>

答案 2 :(得分:0)

这不会解决您的基本问题:

select * from `cases_task_association` where status =2;

这没有连接等,但上面的查询是提供所有过期但未完成的案例的基础。