Почему этот вызов php mysqli терпит неудачу? - PullRequest
1 голос
/ 14 декабря 2011

Я пытаюсь собрать несколько «СЧЕТОВ» из одной таблицы для заполнения объекта значения.Я запускаю его на своем локальном сервере, и он работает несколько, что, я думаю, на самом деле означает, что это не так.Система предназначена для отслеживания проверок и данных проверок, и эта функция вызывает историю прошлых проверок.Первая часть обращается к таблице «инспекции», чтобы получить идентификаторы инспекций для этой программы, а вспомогательный элемент получает подсчет количества проверенных элементов, количества элементов в соответствии и т. Д.

Так вот в чем суть.Возвращает правильное количество объектов, только некоторые идентификаторы не возвращаются, а на их место возвращаются дубликаты других.Я попытался сделать это как LEFT JOINS, я попробовал ORDER BY, и я немного поиграл с ним и не могу понять, почему он дублирует одни контрольные идентификаторы и отбрасывает другие.Вот соответствующая часть кода:

$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 Ответ

1 голос
/ 15 декабря 2011

Удалите GROUP BY i.id - нет причин иметь его, потому что у вас нет функций агрегирования

Подвыборы используют функцию агрегирования COUNT, но они не являются сами агрегирующий результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...