为什么这个mysqli php调用失败了?

时间:2011-12-14 14:03:09

标签: mysql mysqli

我正在努力收集一些" 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();

非常感谢任何帮助或建议。谢谢。

1 个答案:

答案 0 :(得分:1)

删除GROUP BY i.id - 没有理由拥有它,因为你没有聚合函数

子选择使用聚合函数COUNT,但它们不是自己聚合结果。