3

我有一份包含机构的案件清单。所有机构都包含分配给它的状态的任务。0 = 完成,1 = 进行中,2 = 逾期。

如果有任何任务逾期,我会尝试显示所有情况。目前我的查询显示状态为 1,即使有一些任务过期。

SQL FIDDLE 在这里http://sqlfiddle.com/#!2/a4394/3

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

任何帮助将不胜感激!!

4

3 回答 3

1

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

于 2013-04-26T13:29:52.663 回答
1

忽略您正在编写 MySQL-only SELECT,您的连接是错误的;当你真正想要cc.case_ID的时候加入:caa.IDcaa.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-26T13:30:10.627 回答
0

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

select * from `cases_task_association` where status =2;

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

于 2013-04-26T13:27:28.163 回答