2010-12-12 7 views
0

(MySQL) Я пытаюсь перенести таблицу «подписки» на 3 новые таблицы: «продукт», «подписка», «фактический», где «фактический» - это имя фактического продукта, скажем, информационный бюллетень. В подписке есть ссылка FK на продукт, а фактическая ссылка FK в подписку.SQL: flavors of INSERT INTO

Я знаю, что оператор INSERT INTO SELECT может копировать данные, вероятно, из многих таблиц в один; есть ли заявление, чтобы сделать противоположное, от одного до многих таблиц для моего случая?

ответ

0

Мне не известно о выражении SQL, которое будет делать то, что вы хотите. Просто выполните несколько INSERT INTO SELECTs один за другим. В любом случае, это может быть быстрее.

+0

спасибо blackcom, я не думаю, что можно получить product.id с предложением WHERE, потому что кроме PK другие поля не уникальны. Есть ли SQL for-loop, чтобы сделать 3 вставки на старую подписку? – Jake

0

Я думаю, вы можете использовать три отдельные вставки в отдельные утверждения. Прежде всего преобразовать таблицу продуктов, то подписка, где вы можете использовать встроенный выбрать, чтобы найти идентификатор в таблице продукта:

insert into subscription (some_column, FK_id,...) 
select something, (select id from product where <your where clause>),... 

и, наконец, преобразовать реальную таблицу, используя встроенный выбрать, чтобы получить идентификатор от подписки Таблица.

+0

спасибо blackcom, я не думаю, что можно получить product.id с предложением WHERE, потому что кроме PK другие поля не уникальны. Есть ли SQL for-loop, чтобы сделать 3 вставки на старую подписку? – Jake