사용자한테 날짜1,날짜2를 받아서 해당하는 기간에 대해서 데이터를 가져올려고 하는데 문제는 테이블이 월별로 나눠져있습니다
테이블명이 201705, 201706, 201707 이런식이라서 사용자가 201706~201708라고 입력을 하면 테이블을 201706,201707,201708 3개 테이블을 찾아서 데이터를 가져와야되는데.. 어떻게 가져와야될지 몰르겠습니다
우선 프로시저를 보면.. 몇일(da1)~몇일(da2)까지 사용자한테 데이터를 받아서 가져오는 부분이 있습니다
그리고 제 생각에는 달차이를 계산해서 (8-6)+1를 하니 3개 테이블을 찾아야된다 이것까지는 생각을 했는데.. 문제는 테이블명이 동적으로 들어가지를 않습니다
WHILE 돌리면서 임시테이블을 만들어 조인을 하는게 맞는건가요?? 다른방법이 있는건가요??
DELIMITER $$
CREATE PROCEDURE sale(IN _da1 CHAR(7),IN _da2 CHAR(7))
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
START TRANSACTION;
WHILE(i<=_co)DO
SET i=i+1;
END WHILE;
SELECT * FROM _da
COMMIT;
END$$
DELIMITER;
테이블은 실체(데이터)가 있는거구요.
뷰는 실체가 없습니다. 뷰는 쿼리만 있습니다.
테이블의 값을 보여주는 창문 역할을 하는 것이구요.
-- 1. 뷰 생성 CREATE VIEW v_test AS SELECT * FROM t_201701 UNION ALL SELECT * FROM t_201702 UNION ALL SELECT * FROM t_201703 UNION ALL SELECT * FROM t_201704 UNION ALL SELECT * FROM t_201705 UNION ALL SELECT * FROM t_201706 UNION ALL SELECT * FROM t_201707 UNION ALL SELECT * FROM t_201708 -- UNION ALL SELECT * FROM t_201709 -- 다음달 초에 테이블이 생성될 때 추가해야 함 ; -- 2. 뷰 조회 SELECT * FROM v_test WHERE dt BETWEEN '20170523' AND '20170711' ;