我正在尝试创建一个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 $$
答案 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
);