Использование данных и схемы с этого сайта: Использование данных с этого сайта: https://www.sqlservertutorial.net/sql-server-sample-database/
Мне выдается приглашение:
Создать хранимая процедура placeOrder (), которая может быть вызвана для вставки нового заказа в базу данных. Он получит customerId в виде INT, productId в качестве INT и qty в качестве INT и вернет (в качестве параметра anoutput) order_id новой строки, созданной в табличных порядках.
Эта хранимая процедура найдет Магазин с самым большим запасом этого конкретного продукта и назначить этот магазин для заказа. Order_status должен быть установлен в 1 (то есть в ожидании), текущая системная дата (см. Функцию CURDATE) будет назначена order_date, столбец required_date будет через 7 дней после текущей системной даты (см. Функцию ADDDATE) и столбец staff_id будет назначен для всех, кто работает в выбранном магазине (согласно предыдущему требованию). Поскольку столбец order_id не является столбцом с автоинкрементом, вам необходимо рассчитать его значение. Вы можете использовать max (order_id), чтобы узнать самый высокий order_id в таблице.
В строке order_item должен быть указан productId, а qty передан хранимой процедуре. Item_id должен быть установлен в 1 (так как в этом заказе будет только один элемент). Прайс-лист должен быть получен из таблицы продуктов, используя переданный productId. Значение скидки должно быть установлено на 0
. Если я правильно понимаю подсказку, мне сначала нужно указать идентификатор магазина, в котором содержится большинство товаров определенного типа. После того, как у меня есть это хранилище, мне нужно вставить новую строку данных в таблицу "orders", основными данными которой являются order_id, customer_id, order_status, order_date, required, date и staff_id. Я НЕ понимаю, о чем говорит последняя часть вопроса / как go о решении.
Вот мой текущий код, но я почти уверен, что мел полон ошибок а также заметки и недостающие фрагменты, поэтому, пожалуйста, помогите мне, где вы можете:
DELIMITER //
CREATE procedure placeOrder (IN customerID INT, IN productID INT, IN QTY INT, OUT order_id INT)
BEGIN
DECLARE customerID INT;
DECLARE produtcID INT;
DECLARE quantity INT;
SELECT customer_id INTO customerID from customers where customer_id = customerID;
SELECT product_id INTO productID from order_items where product_id = productID;
SELECT quantity INTO qty from order_items where quantity = qty;
/**find store id with max stocks of product**/
select st.store_name, sk.store_id from stocks as sk
INNER JOIN
stores as st
ON sk.store_id = st.store_id
WHERE max(sk.quantity)
GROUP by sk.product_id;
select st.store_id from stores as st
INNER JOIN orders as o
ON st.store_id= o.store_id
Insert into orders (order_id, customer_id, order_status, order_date, required_date, staff_id)
WHERE order_status = '1',
AND order_date = select(curdate()),
AND required_date = adddate('order_date' +7),
AND staff_id = /**ANYONE from store listed in precious query (how do I relate these two queries)**
END