我无法在 mysql 中加入两个没有重复的表
I'm unable to join two tables without a duplicates in mysql
我有两个表:
- 成员(member_id、member_gender)
- 订单(order_id、member_id、order_amount)
我必须检索有关会员数量、买家数量(至少有 1 个订单的会员)、订单数量的数据
但不幸的是,我遇到了困难,因为当我尝试加入这两个表时,我收到了重复项,而且我无法计算独特的成员
所以我的初始代码是:
SELECT count(m.member_id) AS Amount_of_members ,count(o.order_id) ,sum(o.order_amount) FROM tbl_member m LEFT JOIN tbl_order o ON m.member_id = o.member_id
您可以要求数据库只计算成员 ID 的唯一出现次数
SELECT count(DISTINCT m.member_id) AS Amount_of_members
您还可以 运行 一个子查询来对订单进行分组,这样在您加入成员之前每个成员只有一行 table,这意味着成员数据不会加倍如果会员有 2 个订单,则增加,如果他们有 3 个等,则增加三倍
SELECT
count(m.member_id) AS Amount_of_members ,
sum(x.count_orders) as total_count_of_orders,
sum(x.sum_orders) as total_sum_of_orders
FROM
tbl_member m
LEFT JOIN (
SELECT
o.member_id,
count(o.order_id) as count_orders ,
sum(o.order_amount) as sum_orders
FROM
tbl_order o
GROUP BY o.member_id
)x ON m.member_id = x.member_id
通常,“在连接完成之前将 1:M 关系的多边压缩到一行”是管理数据的有用方法,尤其是在需要进行多个连接时.获取所有内容 1:1 意味着不会弹出重复项
我有两个表:
- 成员(member_id、member_gender)
- 订单(order_id、member_id、order_amount)
我必须检索有关会员数量、买家数量(至少有 1 个订单的会员)、订单数量的数据
但不幸的是,我遇到了困难,因为当我尝试加入这两个表时,我收到了重复项,而且我无法计算独特的成员
所以我的初始代码是:
SELECT count(m.member_id) AS Amount_of_members ,count(o.order_id) ,sum(o.order_amount) FROM tbl_member m LEFT JOIN tbl_order o ON m.member_id = o.member_id
您可以要求数据库只计算成员 ID 的唯一出现次数
SELECT count(DISTINCT m.member_id) AS Amount_of_members
您还可以 运行 一个子查询来对订单进行分组,这样在您加入成员之前每个成员只有一行 table,这意味着成员数据不会加倍如果会员有 2 个订单,则增加,如果他们有 3 个等,则增加三倍
SELECT
count(m.member_id) AS Amount_of_members ,
sum(x.count_orders) as total_count_of_orders,
sum(x.sum_orders) as total_sum_of_orders
FROM
tbl_member m
LEFT JOIN (
SELECT
o.member_id,
count(o.order_id) as count_orders ,
sum(o.order_amount) as sum_orders
FROM
tbl_order o
GROUP BY o.member_id
)x ON m.member_id = x.member_id
通常,“在连接完成之前将 1:M 关系的多边压缩到一行”是管理数据的有用方法,尤其是在需要进行多个连接时.获取所有内容 1:1 意味着不会弹出重复项