我有一份包含中介机构的案例清单。所有代理都包含分配有状态的任务。0=完成,1=正在进行,2=过期。
我正在尝试显示所有情况下是否有任何任务逾期。目前,我的查询显示状态为1,尽管有一些任务过期了。
SQL FIDDLE HERE http://sqlfiddle.com/#!2/a4394/3
我不知道为了提取正确的数据需要进行哪些更改。有什么想法吗?
任何帮助都将不胜感激!
发布于 2013-04-26 21:30:11
忽略您正在编写的只有MySQL的SELECT,您的连接是错误的;您在caa.ID上加入了cc.case_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的评论,都值得从提出更清晰,更可维护,以及希望更便携/未来兼容的角度进行思考。
发布于 2013-04-26 21:29:53
您的查询是正确的,问题是您正在从多个表中获取信息,但是,您在所有表中都没有足够的记录,基本上您的cases_agency_association表中的ID最多为6,而status为2的cases_task_association表中的记录的ID都大于6……
发布于 2013-04-26 21:27:28
这不就解决了你的基本问题吗:
select * from `cases_task_association` where status =2;这没有连接等,但上面的查询是提供所有过期和未完成的案例的基础。
https://stackoverflow.com/questions/16237561
复制相似问题