我正在尝试创建一个接受来自一个参数的输入的函数,但是从多个表中连接数据以返回该数据的总和。
这是我的联接代码,工作正常:
select orderId, sum(itemPrice * quantity) as totalPrice
from orderItem
join item on item.itemId = orderItem.itemId
group by orderId;
orderItem表将数据存储在orderId,itemId和订单数量的以下列中。
orderId和itemId使用链接到其他表的外键。 orderId链接到记录usersId,订单日期,发货日期和目的地状态的订单表。
itemId链接到查找itemId的项目表,并检索项目的>价格。
以下是我目前为我的功能编写的代码:
delimiter $$
drop function if exists orderTotal $$
CREATE FUNCTION orderTotal(totalId varchar(50))
RETURNS int
READS SQL DATA
BEGIN
declare s int;
select sum(quantity) into s from orderItem where orderId = totalId;
return (s);
END $$
delimiter ;
select orderId, orderTotal(orderId) as totalPrice from orderItem group by orderID;
我知道我错过了一些东西,经过搜索后找不到有效的解决方案。请帮忙。大声笑
我绞尽脑汁后解决方案很简单。只需将join语句添加到select语句即可。所有人都能做到的就是笑。
delimiter $$
drop function if exists orderTotal $$
CREATE FUNCTION orderTotal(totalId varchar(50))
RETURNS int
READS SQL DATA
BEGIN
declare s int;
select sum(quantity * itemPrice) into s from orderItem
join item on item.itemId = orderItem.itemId
where orderId = totalId;
return (s);
END $$