としてTableBのを作成する....私はそれが最善の方法かではありませんわかりません....しかし、それは必要な出力が得られます。
CREATE TABLE `tableb` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dates` date DEFAULT NULL,
`aid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
さて、
insert into tableb(aid,dates) select id,date(valid_from_date) as dates
from tablea union select
id,date(valid_to_date) as dates from tablea order by id;
5つあります。上:今
CREATE PROCEDURE `test_procedure`()
BEGIN
DECLARE aid INT;
DECLARE avalid_from_date date;
DECLARE avalid_to_date date;
DECLARE tempdt date;
DECLARE done INT DEFAULT FALSE;
DECLARE getdates CURSOR FOR SELECT * from tablea;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN getdates;
read_loop: LOOP
FETCH getdates INTO aid,avalid_from_date,avalid_to_date;
IF done THEN
LEAVE read_loop;
END IF;
set tempdt=date(avalid_from_date);
WHILE (tempdt <= date(avalid_to_date)) do
insert into tableb(dates,aid) values(tempdt,aid);
set tempdt=tempdt+INTERVAL 1 DAY;
end while;
END LOOP;
CLOSE getdates;
END
、ジャストcall test_procedure;
すべての出力行がテーブルBに挿入されます。
こんにちはSmitaさん、ありがとうございますが、あなたの構文を完全に理解しているかどうかはわかりません。あなたは詳細を教えていただけますか?ソーステーブル(A)と宛先テーブル(B)はどちらですか? – logicpro
私は自分の答えを理解しました –
私はあなたの答えを理解していますが、問題はIDが単なる「カウンタ」ではなく、関連性のある固有の番号です。たとえば、テーブルAは '43225,43223'などのid値を持ちます。したがって、私は表Aから(それぞれのid値とそのid値の関連する日付)を表Bにコピーする必要があります。助言してください。 – logicpro