sql上的Calcul请求错误

时间:2019-04-21 14:50:27

标签: mysql

我想知道您是否有一个想法,因为金额错误,如何发出正确的sql请求。 is请求必须按国家/地区计算销售额和订单数量。所有结果均按国家显示在地图上。

在这种情况下,下面的请求量为= 18696,该值完全错误。此金额是所有状态表的总和。

但是在orders_status = 1的情况下,金额必须为240

orders_total的值

orders_status 1 ==> 240
orders_status 3 ==> 456.0000
orders_status 3 ==> 18000.0000

请求

    SELECT   COUNT(*) AS total,
             SUM(ot.value) AS amount,
             c.countries_iso_code_2 
    FROM     orders o,
             countries c, 
             orders_total ot
    WHERE    o.orders_status = 1 ===> 
    AND      o.billing_country = c.countries_name
    AND      ot.class = 'ST'
    GROUP BY o.billing_country

谢谢

1 个答案:

答案 0 :(得分:0)

您不会以任何方式将orders_total连接到其他表,因此您将在此处获得笛卡尔连接,并且行将成倍增加。很容易看出您是否删除了分组和汇总。

始终使用标准的JOIN语法,这些变得更容易看到:

select count(*) AS total,
       SUM(ot.value) as amount,
       c.countries_iso_code_2 
 from orders o
 join countries c on o.billing_country = c.countries_name
 join  orders_total ot on ??????
where o.orders_status = 1 ===> 
and ot.class = 'ST'
group by o.billing_country