MySQL — корректно получать данные пользователей и их заказов из двух таблиц

#mysql

#mysql

Вопрос:

У меня есть таблицы пользователей и заказов с такой структурой (упрощенная для вопроса):

Пользователи

идентификатор пользователя

ownerid (идентификатор владельца пользователя, например, основного пользователя)

Компания

ЗАКАЗЫ

ID

дата (дата размещения заказа)

user_id

итого

Мне нужно получить всех пользователей, связанных с одним владельцем (ownerid, скажем, 52, например), которые размещали заказы в течение выбранного периода, в виде массива с некоторыми полями (см. В Запросе). К сожалению, мой запрос выдает ОДИН (не массив), а не текущий результат (иногда даже null во всех полях). Это мой запрос:

 SELECT
  ei_users.userid as id,
  ei_users.company as company,
  ei_users.city as city,
  ei_users.user_type as user_type,
  ei_users.registered as registered,
  count(ei_orders.id) AS orders,
  sum(ei_orders.total) AS revenue
FROM
 ei_orders,
 ei_users
WHERE
 ei_users.userid = ei_orders.user_id 
 amp;amp; ei_users.ownerid = 52 
 amp;amp; DATE_FORMAT(ei_orders.date, "%b") = "Apr" 
 amp;amp; DATE_FORMAT(ei_orders.date, "%Y") = "2019"
 

Пожалуйста, дайте мне знать, что не так с моим запросом и почему я не получаю массив с результатами?

Я нашел свою ошибку, я забыл добавить ГРУППУ ПО ei_users.userid в конце:

 SELECT
  ei_users.userid as id,
  ei_users.company as company,
  ei_users.city as city,
  ei_users.user_type as user_type,
  ei_users.registered as registered,
  count(ei_orders.id) AS orders,
  sum(ei_orders.total) AS revenue
FROM
 ei_orders,
 ei_users
WHERE
 ei_users.userid = ei_orders.user_id 
 amp;amp; ei_users.ownerid = 52 
 amp;amp; DATE_FORMAT(ei_orders.date, "%b") = "Apr" 
 amp;amp; DATE_FORMAT(ei_orders.date, "%Y") = "2019"
GROUP BY ei_users.userid
 

Ответ №1:

Похоже, я забыл добавить в конце:

 GROUP BY ei_users.userid