2014-01-19 2 views
2

У меня есть таблица вроде этого:передачи данных таблиц при Нормализация таблиц в базе данных

Table1: (есть 400 запись)

id category_title  subcategory 
---------------------------------------- 
1  title1    subTitle1.1 
2  title1    subTitle1.2 
3  title2    subTitle2.1 
4  title2    subTitle2.2 
5  title2    subTitle2.3 

для нормализуют эту таблицу я хочу создать две таблицы (TABLE2, Table3) и связь между ними вместо таблицы выше. (удалить Table1 и создать Table2 и Таблица3), как это:

Table2:

id category_title 
--------------- 
1  title1 
2  title2 
3  title3 
4  title4 

Таблица3:

id subcategory  table2_id(FK) 
---------------------------------------- 
1  title1    1 
2  title2    1 
3  title3    2 
4  title4    1 
5  title5    2 

я могу передать Table1.category_title в Table2.category_title капелька этот запрос:

insert into Table2(category_title) (select distinct category_title from Tabe1) 

и может передавать Table1.subcategory в Table3.subcategory по этому запросу:

insert into Table3(subcategory) (select subcategory from Tabe1) 

, но кто может заполнить Table3.table2_id (FK) с правильным соотношением в таблице2? (если я хочу сделать это с рукой, я должен выполнить не менее 200 запросов, и я не хочу этого делать)

Любой может дать мне запрос или другой способ передачи данных между этими таблицами? (прошу прощения за мой английский) Заранее спасибо

ответ

2

Вы можете использовать эти два INSERT запросов, второй с объединением:

INSERT INTO table2 (category_title) 
SELECT DISTINCT category_title FROM table1; 

INSERT INTO table3 (subcategory, table2_id) 
SELECT DISTINCT subcategory, table2.id 
FROM 
    table1 INNER JOIN table2 ON table1.category_title=table2.category_title; 

Пожалуйста, смотрите скрипку here.

+0

, который отлично работает, спасибо. –

0
insert into table3 (subcategory, id) select distinct subcategory, id from table1 

Не уверен, что это subTitle1.1 означает, в случае, если каждый из них отличается, вы должны поставить некоторые функции разбора текста на этом поле.

Смежные вопросы