«Неправильное использование групповой функции» при использовании mysqli_query, но не при использовании MySql напрямую - PullRequest
0 голосов
/ 16 февраля 2019

TLDR: Я получаю ошибку MySQL Invalid use of group function, когда использую PHP mysqli_query, но не при вставке точно такого же запроса в MySQL напрямую.

Скажем, у меня есть следующие таблицы:

customer
customer_help_request
customer_help_request_status

Где customer может иметь много customer_help_request (например, когда вы пишете с просьбой о помощи на веб-сайте).customer_help_request может иметь множество custom_help_request_status, которое отслеживает состояние запроса о помощи (например, ожидает рассмотрения, требует дальнейшего изучения, отправлено электронное письмо и т. Д.).

У меня есть запрос, чтобы найти клиентов, которыеесть запросы на помощь в определенных штатах.Один случай, когда я получаю Invalid use of group function:

(FYI: запрос программно построен из нескольких условий, которые выбирает пользователь, поэтому форма запроса не всегда будет точно такой же.различаются, например, в зависимости от того, какой тип фильтрации был выбран в пользовательском интерфейсе)

SELECT r.customer_id FROM customer_help_request AS r
  JOIN (
    SELECT customer_id, help_request_id FROM customer_help_request
    WHERE help_request_id IN (
      SELECT help_request_id FROM customer_help_request
      GROUP BY help_request_id
      HAVING SUM(CASE WHEN request_closed_date <> "" THEN 1 ELSE 0 END) = 0
    ) AND
    (request_type_id IN ("2"))
    GROUP BY customer_id, help_request_id
  ) AS open_requests
  ON open_requests.help_request_id = r.help_request_id AND open_requests.help_request_id = r.help_request_id
  LEFT JOIN customer_help_request_status AS rs
  ON rs.help_request_id = r.help_request_id
  GROUP BY r.help_request_id
    HAVING SUM(CASE WHEN r.request_type_id = 2 AND STR_TO_DATE(rs.date, "%m/%d/%Y") >= STR_TO_DATE("02/19/2019", '%m/%d/%Y') AND STR_TO_DATE(rs.date, "%m/%d/%Y") <= STR_TO_DATE("02/20/2019", '%m/%d/%Y') THEN 1 ELSE 0 END) > 0;

Я не лучший специалист, чтобы обернуть голову вокруг объединений, подзапросов и производных таблиц, поэтому я ищукак для определения ошибки в моем запросе (если она есть), так и для лучшего понимания того, как добиться того, чего я добиваюсь.Кроме того, любое понимание того, почему PHP mysqli выдаст ошибку, но когда я дам этот запрос и вставлю его непосредственно в приглашение MySQL, я не получу ошибку и получу действительные результаты.

...