Я выучил 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;
Но я получаю неагрегированную ошибку при запуске этого кода, которую я не могу понять. Если я смогу заставить эти два запроса работать, я думаю, что смогу написать хранимую процедуру. Будем благодарны за любые рекомендации.
РЕДАКТИРОВАТЬ: Вопрос о хранимых процедурах, мне даже нужно настроить подзапрос для этой проблемы, или я могу просто определить свои входы и выходы без ссылки на какие-либо таблицы при настройке процедуры?