2010-12-12 9 views
0

(MySQL) J'essaye de migrer une table "d'abonnement" en 3 nouvelles tables: "produit", "abonnement", "réel" où "réel" est le nom du produit réel, dis, bulletin d'information. L'abonnement a une référence FK au produit et le réel a la référence FK en abonnement.SQL: saveurs de INSERT INTO

Je sais que l'instruction INSERT INTO SELECT peut copier des données probablement de plusieurs tables vers une; Y at-il une déclaration à faire le contraire, une à plusieurs tables pour mon cas?

Répondre

0

Je ne suis pas au courant d'une instruction SQL qui fera ce que vous voulez. Faites simplement plusieurs INSERT INTO SELECTs l'un après l'autre. Il peut être plus rapide de les faire un à la fois de toute façon.

+0

merci blackcom, je ne pense pas qu'il soit possible d'obtenir le product.id avec une clause WHERE car autre que le PK, les autres champs ne sont pas uniques. Existe-t-il une boucle for-SQL pour faire 3 insertions par ancien enregistrement d'abonnement? – Jake

0

Je pense que vous pouvez utiliser trois insertions séparées dans les instructions select. D'abord, vous convertissez la table produit, l'abonnement où vous pouvez utiliser un select intégré pour trouver l'identifiant dans la table de produit:

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

et enfin convertir la table réelle en utilisant un select intégré pour obtenir l'ID de l'abonnement table.

+0

merci blackcom, je ne pense pas qu'il soit possible d'obtenir le product.id avec une clause WHERE car autre que le PK, les autres champs ne sont pas uniques. Existe-t-il une boucle for-SQL pour faire 3 insertions par ancien enregistrement d'abonnement? – Jake

Questions connexes