Mysql 多和表

Mysql 多和表,mysql,Mysql,从下面的fiddle中,我想将交叉表求和为下面的查询,但我遇到了sale_事件重复值的问题。你知道这件事吗 SELECT a.province_id, SUM(a.sale_event) AS sale_eventTotal, SUM(d.order_fullpay) AS order_fullpayTotal FROM san_activites a LEFT JOIN sale_event_detail d ON a.san_activity_id = d.sa

从下面的fiddle中,我想将交叉表求和为下面的查询,但我遇到了sale_事件重复值的问题。你知道这件事吗

SELECT
 a.province_id,
 SUM(a.sale_event) AS sale_eventTotal,
 SUM(d.order_fullpay) AS order_fullpayTotal
FROM
    san_activites a
LEFT JOIN
    sale_event_detail d
ON
    a.san_activity_id = d.san_activity_id
WHERE 
    a.entry_date BETWEEN '2014-7-1' AND '2014-7-30'
GROUP BY a.province_id

只需按a.province\u id删除
,然后运行对我有效的查询

san_activity_id
上,或在查询时进行重复数据消除:

SELECT 
 SUM(a.sale_event) AS sale_eventTotal,
 SUM(d.order_fullpay) AS order_fullpayTotal
FROM
    san_activites a
LEFT JOIN
    (select * from sale_event_detail group by san_activity_id) d
ON
    a.san_activity_id = d.san_activity_id
WHERE 
    a.entry_date BETWEEN '2014-7-1' AND '2014-7-30'
GROUP BY a.province_id

我得到了你想要的结果。结果返回
3 | 10
4 | 20

SELECT 
 SUM(a.sale_event) AS sale_eventTotal,
 SUM(d.order_fullpayTotal) AS order_fullpayTotal
FROM
    san_activites a
LEFT JOIN
    (select SUM(order_fullpay) AS order_fullpayTotal, san_activity_id from sale_event_detail group by san_activity_id) d
ON
    a.san_activity_id = d.san_activity_id
WHERE 
    a.entry_date BETWEEN '2014-7-1' AND '2014-7-30'
GROUP BY a.province_id

那么你希望得到什么结果呢?嗯。。。如果查看插入行的详细信息。。。我希望省id 2上的销售活动只有4而不是8,这是一个重复的值您的数据中似乎有重复的行。你是说你想忽略重复的吗?嗯。。。我需要按省份分组的朋友。亲爱的朋友,真的非常感谢,这就是我要找的人…嗨,朋友,非常感谢你的帮助。你几乎是对的,但就我所期望的20英镑的全薪订单而言。非常感谢你。