我正在学习关于abotu存储函数的信息,但是对存储函数内部的SQL代码有点迷惑,可以使用一些帮助。
我的提示如下:“创建一个名为findStoreByProduct()的存储函数,该函数将字符串作为 输入,并返回一个store_id。 store_id与最大的商店相关 库存输入字符串中标识的产品。”
我可以使用三个表: 1.产品:product_id,product_name 2. order_items:order_id,product_id,数量 3.订单:order_id,store_id。
我对这个问题的理解是,我需要查看每种产品的总和,然后返回该商品中最多的商店的结果。
我对(sub?)查询的第一个想法是连接产品表和order_items,如下所示:
SELECT p.product_name AS Name, sum(oi.quantity) AS Total FROM products AS p
INNER JOIN order_items AS oi
ON p.product_id = oi.product_id
GROUP BY p.product_name;
然后,我将尝试将该子查询链接到外部查询(如下),并关联这些值以返回store_id:
SELECT o.store_id, sum(oi.quantity) FROM orders as o
Inner join order_items AS oi
ON o.order_id = oi.order_id;
但是我在运行该代码时遇到了一个非汇总错误,这似乎是我无法理解的。如果我能使这两个查询正常工作,我想我将能够编写一个存储过程。任何指导将不胜感激。
编辑:关于存储过程的问题,我是否甚至需要为此问题设置子查询,还是可以在设置过程时不定义任何表就定义输入和输出?