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