BEGIN
DECLARE v_fair_id BIGINT;
DECLARE v_school_id BIGINT;
DECLARE v_salesperson_id BIGINT;
DECLARE v_delivery_date DATE;
DECLARE v_pickup_date DATE;
DECLARE v_previous_fair_id1 BIGINT;
DECLARE v_previous_start_date1 DATE;
DECLARE v_previous_start_date2 DATE;
DECLARE v_previous_start_date3 DATE;
DECLARE SQLSTATE CHAR(5);
DECLARE c_book_fair CURSOR FOR
SELECT f.id, f.school_id, f.delivery_date FROM bkfair01.fair f;
DELETE FROM BKFAIR01.PREVIOUS_FAIRS;
COMMIT;
OPEN c_book_fair;
FETCH FROM c_book_fair INTO v_fair_id, v_school_id, v_delivery_date;
WHILE (SQLSTATE = '00000') DO
SET v_previous_start_date1 = NULL;
SET v_previous_start_date2 = NULL;
SET v_previous_start_date3 = NULL;
SELECT MAX(delivery_date) INTO v_previous_start_date1
FROM BKFAIR01.FAIR f, BKFAIR01.MYTEAM mt
WHERE f.id = mt.fair_id
AND f.SCHOOL_ID = v_school_id
AND f.PICKUP_DATE < v_delivery_date;
IF v_previous_start_date1 IS NOT NULL THEN
INSERT INTO BKFAIR01.PREVIOUS_FAIRS(FAIR_ID,SCHOOL_ID,PREVIOUS_FAIR_ID,PREVIOUS_FAIR_START_DATE)
SELECT DISTINCT v_fair_id, v_school_id, f.id, f.delivery_date
FROM BKFAIR01.FAIR f, BKFAIR01.MYTEAM mt
WHERE f.id = mt.fair_id
AND f.school_id = v_school_id
AND f.delivery_date = v_previous_start_date1;
SELECT MAX(delivery_date) into v_previous_start_date2
FROM BKFAIR01.FAIR f, BKFAIR01.MYTEAM mt
WHERE f.id = mt.fair_id
AND f.SCHOOL_ID = v_school_id
AND f.PICKUP_DATE < v_previous_start_date1;
IF v_previous_start_date2 IS NOT NULL THEN
INSERT INTO BKFAIR01.PREVIOUS_FAIRS(FAIR_ID,SCHOOL_ID,PREVIOUS_FAIR_ID,PREVIOUS_FAIR_START_DATE)
SELECT DISTINCT v_fair_id, v_school_id, f.id, f.delivery_date
FROM BKFAIR01.FAIR f,BKFAIR01.MYTEAM mt
WHERE f.id = mt.fair_id
AND f.school_id = v_school_id
AND f.delivery_date = v_previous_start_date2;
SELECT MAX(delivery_date) into v_previous_start_date3
FROM BKFAIR01.FAIR f,BKFAIR01.MYTEAM mt
WHERE f.id = mt.fair_id
AND f.SCHOOL_ID = v_school_id
AND f.PICKUP_DATE < v_previous_start_date2;
IF v_previous_start_date3 IS NOT NULL THEN
INSERT INTO BKFAIR01.PREVIOUS_FAIRS(FAIR_ID,SCHOOL_ID,PREVIOUS_FAIR_ID,PREVIOUS_FAIR_START_DATE)
SELECT DISTINCT v_fair_id, v_school_id, f.id, f.delivery_date
FROM BKFAIR01.FAIR f, BKFAIR01.MYTEAM mt
WHERE f.id = mt.fair_id
AND f.SCHOOL_ID = v_school_id
AND f.delivery_date = v_previous_start_date3;
END IF;
END IF;
END IF;
FETCH FROM c_book_fair INTO v_fair_id, v_school_id, v_delivery_date;
END WHILE;
CLOSE c_book_fair;
COMMIT;
END