SELECT d.`订单ID`,k.`公司名称`,d.`货主地区`,sum(m.`数量`*m.`单价`*(1- m.`折扣`)) AS 订单总额
FROM `订单` as d
INNER JOIN 订单明细 as m on d.`订单ID`=m.`订单ID`
INNER JOIN 客户 as k on d.`客户ID`=k.`客户ID`
WHERE 订单总额 >5000
GROUP By m.`订单ID`
where那里这样写为什么不行??求搭救
正确的语句楼上的都可以的,我这里就不多写了。我就是简单的陈述一下出现这种问题的原因。
--------------------------------------------------------------------------------------------------
SQL的执行顺序是先执行WHERE再执行GROUP BY 的,但是由于你在查询中用了sum 那么这样执行顺序就会混乱的。如果他先执行 WHERE那么sum 后才是你的订单金额。在sum出现的时候一般要和GROUP BY同时出现的。不然就会像你这样出错的,一般的汇总后的过滤条件用HAVING 进行过滤的。如果不进行汇总之后作为过滤条件是不会报错的。像你上面的语句,如果用数量而不是订单总额。那么久不会报错了。
上述:就是报错的具体原因
GROUP By m.`订单ID` having 订单总额 > 5000
————————————————
select* from
(SELECT d.`订单ID`,k.`公司名称`,d.`货主地区`,sum(m.`数量`*m.`单价`*(1- m.`折扣`)) AS 订单总额
GROUP By m.`订单ID` )