Как использовать для / для каждого цикла для извлечения данных из базы данных SQL, используя хранимую процедуру с массивом кортежей в качестве параметра? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь извлечь некоторые данные из базы данных SQL.Я учусь на SQL и использую mysql-workbench.

Вот мой пример базы данных.

OrderTable

Из этой таблицы я хочу проверить, существует ли определенный order_id или нет, вставляя определенныефрукты, канцтовары и напитки в качестве параметра для хранимой процедуры.Пользовательский ввод будет выполнен в виде массива кортежей.Например,

SearchArray = [("Fruit", "Apple"), ("Fruit", "Papaya"), ("Stationary", "Pen"), ("Drinks", "Juice"))]

Вот псевдокод:

DELIMITER $$
DROP PROCEDURE IF EXISTS CheckOrders;
CREATE PROCEDURE CheckOrders(OrderType VARCHAR(20), OrderItem VARCHAR(20))
BEGIN 
   FOR EACH IN SearchArray
        SELECT ORDER_ID 
        FROM OrderTable
        GROUP BY ORDER_ID
        HAVING 
            COUNT(CASE WHEN OrderType = OrderItem THEN 1 END) > 0;
END$$
DELIMITER ;
CALL CheckOrders(SearchArray);



From this I should get
First loop result = [1, 3, 4] //Order_ID
Second loop result = [1, 3] 
Third loop result = [1, 3]
Fourth loop result = [3] //Final result

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

...