我想知道您是否有一个想法,因为金额错误,如何发出正确的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
谢谢
答案 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