如何借助groupby子句在一个查询中获得两个不同表的不同行数

i7uq4tfw  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(388)

我有一个父表(order)和一个子表(item)。一个用户可以在一天内订购多个订单,一个订单可能有多个项目。
我的table结构像,


我想得到这样的结果,在一个有多少订单和项目已由特定用户订购。
我需要这样的结果

谢谢您。

uklbhaso

uklbhaso1#

尝试使用 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演示

mfpqipee

mfpqipee2#

您必须对user、order和item表使用内部联接。对每个日期和顺序也使用GROUPBY子句。

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

相关问题