子查询和内部联接

时间:2020-04-18 00:18:38

标签: mysql stored-procedures subquery

我正在学习关于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;

但是我在运行该代码时遇到了一个非汇总错误,这似乎是我无法理解的。如果我能使这两个查询正常工作,我想我将能够编写一个存储过程。任何指导将不胜感激。

编辑:关于存储过程的问题,我是否甚至需要为此问题设置子查询,还是可以在设置过程时不定义任何表就定义输入和输出?

0 个答案:

没有答案