CREATE TABLE t1 (
key TEXT PRIMARY KEY NOT NULL,
name TEXT NOT NULL UNIQUE
);
INSERT INTO t1 (key, name) VALUES ('t1_key1', 't1_name1');
INSERT INTO t1 (key, name) VALUES ('t1_key2', 't1_name2');
CREATE TABLE t2 (
key TEXT PRIMARY KEY NOT NULL,
name TEXT NOT NULL UNIQUE
);
INSERT INTO t2 (key, name) VALUES ('t2_key1', 't2_name1');
INSERT INTO t2 (key, name) VALUES ('t2_key2', 't2_name2');
CREATE TABLE t3 (
key TEXT PRIMARY KEY NOT NULL,
name TEXT NOT NULL UNIQUE
);
INSERT INTO t3 (key, name) VALUES ('t3_key1', 't3_name1');
INSERT INTO t3 (key, name) VALUES ('t3_key2', 't3_name2');
CREATE TABLE t4 (
year TEXT NOT NULL,
t1_key TEXT NOT NULL,
t3_key TEXT NOT NULL,
percent INTEGER NOT NULL,
UNIQUE(year, t1_key, t3_key),
FOREIGN KEY(t1_key) REFERENCES t1(key) ON DELETE CASCADE,
FOREIGN KEY(t3_key) REFERENCES t3(key) ON DELETE CASCADE
);
/*
INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2011', 't1_key1', 't3_key1', 10);
INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2012', 't1_key2', 't3_key2', 50);
INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2012', 't1_key2', 't3_key1', 100);
*/
--テーブル「t4」
INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2011', 't1_key1', 't3_key1', 10);-- テーブル「t5」の'2011-01-01'の行がpercent「10」を利用する
INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2011', 't1_key1', 't3_key2', 100);-- テーブル「t5」の'2011-02-02'と'2011-02-02'の2つの行がpercent「100」を利用する
INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2011', 't1_key2', 't3_key1', 30);
INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2012', 't1_key2', 't3_key2', 50);
INSERT INTO t4 (year, t1_key, t3_key, percent) VALUES ('2012', 't1_key2', 't3_key1', 100);
CREATE TABLE t5 (
no INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
t2_key TEXT NOT NULL,
t3_key TEXT NOT NULL,
amount INTEGER NOT NULL,
FOREIGN KEY(t2_key) REFERENCES t2(key) ON DELETE CASCADE,
FOREIGN KEY(t3_key) REFERENCES t3(key) ON DELETE CASCADE
);
/*
INSERT INTO t5 (date, t2_key, t3_key, amount) VALUES ('2011-01-01', 't2_key1', 't3_key1', 3000);
INSERT INTO t5 (date, t2_key, t3_key, amount) VALUES ('2011-02-02', 't2_key1', 't3_key2', 2000);
INSERT INTO t5 (date, t2_key, t3_key, amount) VALUES ('2012-01-01', 't2_key1', 't3_key1', 5000);
*/
--テーブル「t5」
INSERT INTO t5 (date, t2_key, t3_key, amount) VALUES ('2011-01-01', 't2_key1', 't3_key1', 3000);-- '2011'と't2_key1'でとりあえず条件を満たす
/*INSERT INTO t5 (date, t2_key, t3_key, amount) VALUES ('2011-02-02', 't2_key1', 't3_key1', 2000);*/
INSERT INTO t5 (date, t2_key, t3_key, amount) VALUES ('2011-02-02', 't2_key1', 't3_key2', 2000);-- '2011'と't2_key1'でとりあえず条件を満たす
INSERT INTO t5 (date, t2_key, t3_key, amount) VALUES ('2011-03-03', 't2_key2', 't3_key2', 1000);
INSERT INTO t5 (date, t2_key, t3_key, amount) VALUES ('2011-04-04', 't2_key1', 't3_key2', 10000);-- '2011'と't2_key1'でとりあえず条件を満たす
INSERT INTO t5 (date, t2_key, t3_key, amount) VALUES ('2012-01-01', 't2_key1', 't3_key1', 5000);
Q1JFQVRFIFRBQkxFIHQxICgKa2V5IFRFWFQgUFJJTUFSWSBLRVkgTk9UIE5VTEwsCm5hbWUgVEVYVCBOT1QgTlVMTCBVTklRVUUKKTsKSU5TRVJUIElOVE8gdDEgKGtleSwgbmFtZSkgVkFMVUVTICgndDFfa2V5MScsICd0MV9uYW1lMScpOwpJTlNFUlQgSU5UTyB0MSAoa2V5LCBuYW1lKSBWQUxVRVMgKCd0MV9rZXkyJywgJ3QxX25hbWUyJyk7CgpDUkVBVEUgVEFCTEUgdDIgKAprZXkgVEVYVCBQUklNQVJZIEtFWSBOT1QgTlVMTCwKbmFtZSBURVhUIE5PVCBOVUxMIFVOSVFVRQopOwpJTlNFUlQgSU5UTyB0MiAoa2V5LCBuYW1lKSBWQUxVRVMgKCd0Ml9rZXkxJywgJ3QyX25hbWUxJyk7CklOU0VSVCBJTlRPIHQyIChrZXksIG5hbWUpIFZBTFVFUyAoJ3QyX2tleTInLCAndDJfbmFtZTInKTsKCkNSRUFURSBUQUJMRSB0MyAoCmtleSBURVhUIFBSSU1BUlkgS0VZIE5PVCBOVUxMLApuYW1lIFRFWFQgTk9UIE5VTEwgVU5JUVVFCik7CklOU0VSVCBJTlRPIHQzIChrZXksIG5hbWUpIFZBTFVFUyAoJ3QzX2tleTEnLCAndDNfbmFtZTEnKTsKSU5TRVJUIElOVE8gdDMgKGtleSwgbmFtZSkgVkFMVUVTICgndDNfa2V5MicsICd0M19uYW1lMicpOwoKQ1JFQVRFIFRBQkxFIHQ0ICgKeWVhciBURVhUIE5PVCBOVUxMLAp0MV9rZXkgVEVYVCBOT1QgTlVMTCwKdDNfa2V5IFRFWFQgTk9UIE5VTEwsCnBlcmNlbnQgSU5URUdFUiBOT1QgTlVMTCwKVU5JUVVFKHllYXIsIHQxX2tleSwgdDNfa2V5KSwKRk9SRUlHTiBLRVkodDFfa2V5KSBSRUZFUkVOQ0VTIHQxKGtleSkgT04gREVMRVRFIENBU0NBREUsCkZPUkVJR04gS0VZKHQzX2tleSkgUkVGRVJFTkNFUyB0MyhrZXkpIE9OIERFTEVURSBDQVNDQURFCik7Ci8qCklOU0VSVCBJTlRPIHQ0ICh5ZWFyLCB0MV9rZXksIHQzX2tleSwgcGVyY2VudCkgVkFMVUVTICgnMjAxMScsICd0MV9rZXkxJywgJ3QzX2tleTEnLCAxMCk7CklOU0VSVCBJTlRPIHQ0ICh5ZWFyLCB0MV9rZXksIHQzX2tleSwgcGVyY2VudCkgVkFMVUVTICgnMjAxMicsICd0MV9rZXkyJywgJ3QzX2tleTInLCA1MCk7CklOU0VSVCBJTlRPIHQ0ICh5ZWFyLCB0MV9rZXksIHQzX2tleSwgcGVyY2VudCkgVkFMVUVTICgnMjAxMicsICd0MV9rZXkyJywgJ3QzX2tleTEnLCAxMDApOwoqLwotLeODhuODvOODluODq+OAjHQ044CNCklOU0VSVCBJTlRPIHQ0ICh5ZWFyLCB0MV9rZXksIHQzX2tleSwgcGVyY2VudCkgVkFMVUVTICgnMjAxMScsICd0MV9rZXkxJywgJ3QzX2tleTEnLCAxMCk7LS0g44OG44O844OW44Or44CMdDXjgI3jga4nMjAxMS0wMS0wMSfjga7ooYzjgYxwZXJjZW5044CMMTDjgI3jgpLliKnnlKjjgZnjgosKSU5TRVJUIElOVE8gdDQgKHllYXIsIHQxX2tleSwgdDNfa2V5LCBwZXJjZW50KSBWQUxVRVMgKCcyMDExJywgJ3QxX2tleTEnLCAndDNfa2V5MicsIDEwMCk7LS0g44OG44O844OW44Or44CMdDXjgI3jga4nMjAxMS0wMi0wMifjgagnMjAxMS0wMi0wMifjga7vvJLjgaTjga7ooYzjgYxwZXJjZW5044CMMTAw44CN44KS5Yip55So44GZ44KLCklOU0VSVCBJTlRPIHQ0ICh5ZWFyLCB0MV9rZXksIHQzX2tleSwgcGVyY2VudCkgVkFMVUVTICgnMjAxMScsICd0MV9rZXkyJywgJ3QzX2tleTEnLCAzMCk7CklOU0VSVCBJTlRPIHQ0ICh5ZWFyLCB0MV9rZXksIHQzX2tleSwgcGVyY2VudCkgVkFMVUVTICgnMjAxMicsICd0MV9rZXkyJywgJ3QzX2tleTInLCA1MCk7CklOU0VSVCBJTlRPIHQ0ICh5ZWFyLCB0MV9rZXksIHQzX2tleSwgcGVyY2VudCkgVkFMVUVTICgnMjAxMicsICd0MV9rZXkyJywgJ3QzX2tleTEnLCAxMDApOwoKQ1JFQVRFIFRBQkxFIHQ1ICgKbm8gSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCAKZGF0ZSBURVhUIE5PVCBOVUxMLAp0Ml9rZXkgVEVYVCBOT1QgTlVMTCwKdDNfa2V5IFRFWFQgTk9UIE5VTEwsCmFtb3VudCBJTlRFR0VSIE5PVCBOVUxMLApGT1JFSUdOIEtFWSh0Ml9rZXkpIFJFRkVSRU5DRVMgdDIoa2V5KSBPTiBERUxFVEUgQ0FTQ0FERSwKRk9SRUlHTiBLRVkodDNfa2V5KSBSRUZFUkVOQ0VTIHQzKGtleSkgT04gREVMRVRFIENBU0NBREUKKTsKLyoKSU5TRVJUIElOVE8gdDUgKGRhdGUsIHQyX2tleSwgdDNfa2V5LCBhbW91bnQpIFZBTFVFUyAoJzIwMTEtMDEtMDEnLCAndDJfa2V5MScsICd0M19rZXkxJywgMzAwMCk7CklOU0VSVCBJTlRPIHQ1IChkYXRlLCB0Ml9rZXksIHQzX2tleSwgYW1vdW50KSBWQUxVRVMgKCcyMDExLTAyLTAyJywgJ3QyX2tleTEnLCAndDNfa2V5MicsIDIwMDApOwpJTlNFUlQgSU5UTyB0NSAoZGF0ZSwgdDJfa2V5LCB0M19rZXksIGFtb3VudCkgVkFMVUVTICgnMjAxMi0wMS0wMScsICd0Ml9rZXkxJywgJ3QzX2tleTEnLCA1MDAwKTsKKi8KLS3jg4bjg7zjg5bjg6vjgIx0NeOAjQpJTlNFUlQgSU5UTyB0NSAoZGF0ZSwgdDJfa2V5LCB0M19rZXksIGFtb3VudCkgVkFMVUVTICgnMjAxMS0wMS0wMScsICd0Ml9rZXkxJywgJ3QzX2tleTEnLCAzMDAwKTstLSAnMjAxMSfjgagndDJfa2V5MSfjgafjgajjgorjgYLjgYjjgZrmnaHku7bjgpLmuoDjgZ/jgZkKLypJTlNFUlQgSU5UTyB0NSAoZGF0ZSwgdDJfa2V5LCB0M19rZXksIGFtb3VudCkgVkFMVUVTICgnMjAxMS0wMi0wMicsICd0Ml9rZXkxJywgJ3QzX2tleTEnLCAyMDAwKTsqLwpJTlNFUlQgSU5UTyB0NSAoZGF0ZSwgdDJfa2V5LCB0M19rZXksIGFtb3VudCkgVkFMVUVTICgnMjAxMS0wMi0wMicsICd0Ml9rZXkxJywgJ3QzX2tleTInLCAyMDAwKTstLSAnMjAxMSfjgagndDJfa2V5MSfjgafjgajjgorjgYLjgYjjgZrmnaHku7bjgpLmuoDjgZ/jgZkKSU5TRVJUIElOVE8gdDUgKGRhdGUsIHQyX2tleSwgdDNfa2V5LCBhbW91bnQpIFZBTFVFUyAoJzIwMTEtMDMtMDMnLCAndDJfa2V5MicsICd0M19rZXkyJywgMTAwMCk7CklOU0VSVCBJTlRPIHQ1IChkYXRlLCB0Ml9rZXksIHQzX2tleSwgYW1vdW50KSBWQUxVRVMgKCcyMDExLTA0LTA0JywgJ3QyX2tleTEnLCAndDNfa2V5MicsIDEwMDAwKTstLSAnMjAxMSfjgagndDJfa2V5MSfjgafjgajjgorjgYLjgYjjgZrmnaHku7bjgpLmuoDjgZ/jgZkKSU5TRVJUIElOVE8gdDUgKGRhdGUsIHQyX2tleSwgdDNfa2V5LCBhbW91bnQpIFZBTFVFUyAoJzIwMTItMDEtMDEnLCAndDJfa2V5MScsICd0M19rZXkxJywgNTAwMCk7