Как получить различное количество строк двух разных таблиц в одном запросе с помощью предложения group by - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть одна родительская таблица (заказ) и одна дочерняя таблица (товар).Один пользователь может заказать несколько заказов в один день, и один заказ может иметь несколько позиций.

Моя структура таблицы, например,

Order Table Item table

Я хотел быполучить результат, как, в одном, сколько заказов и предметов заказал конкретный пользователь.

Мне нужен результат, как

Result

Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Попробуйте использовать distinct count для count columns, и достаточно grouping by user_id как:

select o.user_id as "User Id",
       count(distinct o.id_order) as "Count(Order)",
       count(distinct i.id_item) as "Count(Item)",
       max("date") as "Date"
  from orders o
  join item i on o.id_order = i.id_order
 group by user_id;

User Id Count(Order)  Count(Item)    Date
------- ------------  -----------  ----------
   1         3            7        22.11.2018

Rextester Demo

0 голосов
/ 22 ноября 2018

Вы должны использовать INNER JOIN для таблицы пользователя, заказа и позиции.также используйте GROUP BY условие для группировки каждой даты и заказа.

SELECT user_id,
       count(o.id_order),
       count(item.id_item)
FROM USER
INNER JOIN
`ORDER` o ON user.id=o.id_order
INNER JOIN item i ON o.id_order=o.id_order
GROUP BY o.Date, o.id_order
...