This question was
migrated来自代码复查堆栈交换,因为它可以在堆栈溢出时得到响应。
Migrated7年前。
我试图从一个表中收集一些“计数”来填充一个值对象。我在本地服务器上运行它,它有点工作,我想这真的意味着它没有工作。它是一个系统跟踪检查和检查数据,这个函数调用过去检查的历史记录。第一部分调用“inspections”表来获取该程序的inspections id,然后子选择get counts来计算检查的项目数、符合的项目数等等。
这是它的肉。它返回正确数量的对象,只返回一些id,并在它们的位置返回其他id的副本。我试着用左键连接,试着用ORDER BY,我已经玩了很多次了,不明白为什么它会复制一些检查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();
任何帮助或建议都非常感谢。谢谢您。