посмотрите на http://sqlfiddle.com/#! 5 / e26e2 / 1 .
при создании баз данных:
CREATE TABLE A (id integer primary key, name text, room Integer);
CREATE TABLE B (id integer primary key, idA integer not null, code blob, FOREIGN KEY(idA) REFERENCES A(id));
Заполните некоторые тестовые данные:
insert into A (id, name, room) values (1, "azerty", 123) ;
insert into A (id, name, room) values (2, "querty", 456) ;
insert into B (id, idA, code) values (10, 1, "code 1") ;
insert into B (id, idA, code) values (15, 1, "code 1b") ;
insert into B (id, idA, code) values (20, 1, "code 1c") ;
insert into B (id, idA, code) values (25, 2, "code 2") ;
insert into B (id, idA, code) values (30, 3, "code 3") ;
скопировать неправильные макеты таблиц в таблицы, которые мы позже отбросим:
alter table B rename to old_B ;
alter table A rename to old_A ;
Создать таблицы в соответствии с правильной компоновкой:
CREATE TABLE A (id integer primary key, name text);
CREATE TABLE B (id integer primary key, idA integer not null, code blob, room Integer, FOREIGN KEY(idA) REFERENCES A(id));
Скопировать выбранные данные из old_A в A:
INSERT OR REPLACE INTO A ( id, name)
SELECT id, name FROM old_A ;
заполнить B внутренним соединением, чтобы "выстроить" комнату с правильным idA:
INSERT OR REPLACE INTO B ( id, idA, code, room)
SELECT old_B.*, old_A.room FROM old_B INNER JOIN old_A ON old_B.idA = old_A.id ;
удалить старые таблицы
DROP TABLE old_A ;
DROP TABLE old_B ;