Я пытаюсь создать функцию, которая проверяет, существует ли ключ для книги в таблице книг, и если это так, она определяет количество этой книги в таблице инвентаря и количество, которое было продано за Таблица купленных предметов. Когда я пытаюсь запустить мой текущий код, он говорит: «Результат состоит из более чем одной строки» каждый раз, когда я запускаю его, независимо от значения. Я не знаю, как еще его настроить.
DELIMITER //
CREATE FUNCTION quantity_on_stock(
book_key INT
)
RETURNS INT
READS SQL DATA
BEGIN
DECLARE num_books_recieved INT;
DECLARE num_books_sold INT;
DECLARE book_key_var INT;
DECLARE book_inventory_key_var INT;
SELECT book_key
INTO book_key_var
FROM books
WHERE book_key = books.book_key;
IF book_key = book_key_var THEN
SELECT quantity INTO num_books_recieved FROM book_inventory bi WHERE book_key = bi.book_key;
SELECT book_inventory_key INTO book_inventory_key_var FROM book_inventory bi WHERE book_key = bi.book_key;
SELECT quantity INTO num_books_sold FROM purchase_items pi WHERE book_inventory_key_var = pi.book_inventory_key;
END IF;
RETURN (num_books_recieved - num_books_sold);
END//
DELIMITER ;
Book_key - это FK в таблице инвентаризации книг. Book_inventory_key - это FK в таблице purchase_items.