我正在努力收集一些" COUNTS"从一个表填充值对象。我在我的本地服务器上运行它,它有点工作,我想这真的意味着它没有。系统跟踪检查和检查数据,此功能调用过去检查的历史记录。第一部分呼吁"检查"用于获取该程序的检查ID的表,子选项可以获取检查的项目数,合规项数,等等。
所以这就是它的核心。它返回正确数量的对象,只返回一些id,并返回其他ID的重复项。我尝试将其作为LEFT JOINS,我尝试了ORDER BY,并且我已经玩了很多,并且无法弄清楚为什么它会重复某些检查ID并丢弃其他检测ID。以下是代码的相关部分:
$stmt = mysqli_prepare($this->connection,
"SELECT
i.id,
i.assign_date,
i.start_date,
i.complete_date,
i.complete,
i.inspection_type,
i.program_id,
(SELECT COUNT(t.inspected) FROM insp_items t WHERE t.inspection_id = i.id && t.inspected = 1) AS inspected,
(SELECT COUNT(t.status) FROM insp_items t WHERE t.inspection_id = i.id && t.status = 0) AS ic,
(SELECT COUNT(t.status) FROM insp_items t WHERE t.inspection_id = i.id && t.status = 1) AS icw,
(SELECT COUNT(t.status) FROM insp_items t WHERE t.inspection_id = i.id && t.status = 2) AS nic,
(SELECT COUNT(t.status) FROM insp_items t WHERE t.inspection_id = i.id && t.status = 3) AS na
FROM inspections i
WHERE i.program_id = ? GROUP BY i.id");
$this->throwExceptionOnError();
非常感谢任何帮助或建议。谢谢。
答案 0 :(得分:1)
删除GROUP BY i.id
- 没有理由拥有它,因为你没有聚合函数
子选择使用聚合函数COUNT
,但它们不是自己聚合结果。