MYSQL:计算订单总额的函数

时间:2015-03-27 00:00:30

标签: mysql

我正在尝试创建一个MySQL函数来计算客户订单的总和。

数据是标准化的,来自两个不同的表。我相信我已经使得缩放器选择语句正常工作,但正在努力乘以数量,并将这些行聚合在一起以使其返回

这是我的查询(给我一个“不允许从函数返回结果集”错误):

delimiter $$
create function calcOrderTotal(id int(10))
returns decimal(10,2)
reads sql data
begin
    declare orderTotal decimal(10,2);
    select itemId, (select itemPrice from item i where oi.itemId = i.itemId), quantity from orderItem oi where orderId = id;
    set orderTotal = sum(itemPrice);
    return (orderTotal);
end $$

1 个答案:

答案 0 :(得分:2)

您只需要加入:

SELECT SUM(itemPrice * quantity)
FROM   item i JOIN orderItem oi USING (itemId)
WHERE  orderId = ?

但是,如果你绝对必须把它放在一个函数中:

CREATE FUNCTION calcOrderTotal(id INT(10))
RETURNS DECIMAL(10,2)
READS SQL DATA
RETURN (
  SELECT SUM(itemPrice * quantity)
  FROM   item i JOIN orderItem oi USING (itemId)
  WHERE  orderId = id
);