t-janicki
1/6/2019 - 4:32 PM

Kodilla Task 22.2.sql

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();