Подзапросы и внутренние объединения - PullRequest
0 голосов
/ 18 апреля 2020

Я выучил abotu сохраненные функции, но немного потерян в коде SQL внутри хранимой функции и мог бы использовать некоторую помощь.

Мой запрос выглядит следующим образом: «Создайте хранимую функцию с именем findStoreByProduct (), который будет принимать строку в качестве входных данных и возвращать store_id. store_id относится к магазину с наибольшим запасом, идентифицированным продуктом во входной строке. "

У меня есть три таблицы для работы: 1. products: product_id, product_name 2. order_items: order_id, product_id, количество 3. orders: order_id, store_id.

Я понимаю, что мне нужно посмотреть на общую сумму каждого продукта, а затем вернуть результат для магазина, который имеет большую часть этого элемента.

Моей первой мыслью по (под?) Запросу было бы объединение таблицы продуктов и 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;

Но я получаю неагрегированную ошибку при запуске этого кода, которую я не могу понять. Если я смогу заставить эти два запроса работать, я думаю, что смогу написать хранимую процедуру. Будем благодарны за любые рекомендации.

РЕДАКТИРОВАТЬ: Вопрос о хранимых процедурах, мне даже нужно настроить подзапрос для этой проблемы, или я могу просто определить свои входы и выходы без ссылки на какие-либо таблицы при настройке процедуры?

...