【问题标题】:Mysql query returns duplicate results for each recordMysql查询为每条记录返回重复的结果
【发布时间】:2020-03-25 16:29:54
【问题描述】:

我不是 sql 专家,但我有三个表,我为每个表添加了一个外键(也许这就是问题所在)

|---------------------|    |---------------------|   |---------------------| 
|   DISTINCT_DEALER   |    |  DISTINCT_CUSTOMER  |   |    CUSTOMER_SALES   |
|---------------------|    |---------------------|   |---------------------| 
|      d_id   (pk)    |    |       d_id          |   |        d_id         |
|---------------------|    |---------------------|   |---------------------| 
|    dealer_address   |    |     dealer_name     |   |   customer_number   |
|---------------------|    |---------------------|   |---------------------| 
|    dealer_city      |    |   customer_number   |   |    total_sales      |
|---------------------|    |---------------------|   |---------------------| 
|    dealer_state     |    |    customer_name    |
|---------------------|    |---------------------| 
|    dealer_zip       |    |    customer_email   |
|---------------------|    |---------------------| 

我有一个针对 distinct_customers d_id 的 FK 参考 distinct_dealer d_id 和一个关于 d_id 上的客户销售的 FK 引用 distinct_dealer d_id。

当我在下面运行这个查询时,它返回每条记录重复 54 ​​次(那个 d_id 的总记录数。

select d.d_id, d.dealer_name, cs.total_sales from dship d
join cs_sales cs on d.d_id = cs.d_id order by d.d_id

看起来它为每个 d_id 返回了一条记录,有人可以看到我做错了什么吗?

【问题讨论】:

    标签: mysql sql join foreign-keys primary-key


    【解决方案1】:

    我想你想要聚合:

    select d.d_id, d.dealer_name,
           sum(cs.total_sales)
    from dship d join
         cs_sales cs
         on d.d_id = cs.d_id 
    group by d.d_id;
    

    【讨论】:

    • 是的,但我也在尝试为每位客户带来每笔销售。通过该查询,它会汇总每个经销商的经销商销售额。我想做的是列出每个经销商及其客户名称和每个客户的每次销售。
    猜你喜欢
    • 2018-01-18
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多