2010-12-12 18 views
0

(MySQL)「サブスクリプション」テーブルを「製品」、「サブスクリプション」、「実際」の3つの新しいテーブルに移行しようとしています。「実際」は実際の製品の名前です。ニュースレター。サブスクリプションには製品へのFK参照があり、実際にはサブスクリプションへのFK参照があります。SQL:フレーバーINSERT INTO

私はINSERT INTO SELECTステートメントがおそらく多くのテーブルから1つにデータをコピーできることを知っています。私の場合のために、反対の、1対多数のテーブルを行う声明がありますか?

答えて

0

私はあなたが望むことをするSQL文を認識していません。ちょうどいくつかのINSERT INTO SELECTを1つずつ実行してください。いずれにせよ、一度に1つずつ実行するほうが速いかもしれません。

+0

blackcomに感謝します。私は、PK以外の他のフィールドは一意ではないので、WHERE句でproduct.idを取得することは可能ではないと思います。古いサブスクリプションレコードごとに3回挿入するSQL for-loopはありますか? – Jake

0

私はあなたがselect文に3つの別々の挿入を使用できると思います。まず、あなたがして、あなたが製品テーブルにIDを見つけるために埋め込まれた選択を使用することができ、サブスクリプション製品テーブルを変換:

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

を、最終的には、サブスクリプションからIDを取得するために埋め込まれた選択を使用して、実際のテーブルを変換します表。

+0

ありがとうございましたblackcom、私は、PK以外の他のフィールドが一意ではないので、WHERE句でproduct.idを取得することは可能だとは思いません。古いサブスクリプションレコードごとに3回挿入するSQL for-loopはありますか? – Jake