DROP PROCEDURE IF EXISTS UpdateBestsellers;
DELIMITER $$
CREATE PROCEDURE UpdateBestsellers()
BEGIN
DECLARE BK_ID, DAYS INT;
DECLARE IS_BESTSELLER BOOLEAN;
DECLARE FINISHED INT DEFAULT 0;
DECLARE ALL_BOOKS CURSOR FOR SELECT BOOK_ID FROM BOOKS;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET FINISHED = 1;
OPEN ALL_BOOKS;
WHILE(FINISHED = 0) DO
FETCH ALL_BOOKS INTO BK_ID;
IF (FINISHED = 0) THEN
SELECT DATEDIFF(MAX(RENT_DATE), MIN(RENT_DATE)) FROM RENTS WHERE BOOK_ID = BK_ID INTO DAYS;
IF (DAYS > 2) THEN
SET IS_BESTSELLER = TRUE;
ELSE
SET IS_BESTSELLER = FALSE;
END IF;
UPDATE BOOKS SET BESTSELLER = IS_BESTSELLER WHERE BOOK_ID = BK_ID;
COMMIT;
END IF;
END WHILE;
CLOSE ALL_BOOKS;
END $$
DELIMITER ;
CALL UpdateBestsellers();