我无法在 mysql 中加入两个没有重复的表

I'm unable to join two tables without a duplicates in mysql

我有两个表:

  1. 成员(member_id、member_gender)
  2. 订单(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 意味着不会弹出重复项