2010-12-12 15 views
0

(MySQL) Ich versuche, eine "Abonnement" -Tabelle in 3 neue Tabellen zu migrieren: "Produkt", "Abonnement", "tatsächliche" wo "tatsächliche" ist der Name des tatsächlichen Produkts, sagen, Newsletter. Die Subskription hat eine FK-Referenz auf das Produkt und die aktuelle Subskription hat eine FK-Referenz in der Subskription.SQL: Aromen von INSERT INTO

Ich weiß, die INSERT INTO SELECT Anweisung kann Daten wahrscheinlich von vielen Tabellen zu eins kopieren; Gibt es eine Aussage, um das Gegenteil zu tun, eine für viele Tische für meinen Fall?

Antwort

0

Ich bin nicht bewusst einer SQL-Anweisung, die tun wird, was Sie wollen. Mach einfach mehrere INSERT INTO SELECTs nacheinander. Es kann schneller sein, sie trotzdem einzeln zu machen.

+0

danke blackcom, ich glaube nicht, dass es möglich ist, die product.id mit einer WHERE-Klausel zu erhalten, weil andere Felder als die PK nicht eindeutig sind. Gibt es eine SQL for-Schleife, um 3 Einfügungen pro alten Subskriptionsdatensatz zu machen? – Jake

0

Ich denke, Sie können drei separate Einfügen in Select-Anweisungen verwenden. Zuerst die Produkttabelle konvertiert, dann das Abonnement, wo Sie eine eingebetteten wählen zu finden, die ID in der Produkttabelle verwenden:

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

und schließlich wandeln die aktuelle Tabelle mit einer eingebetteten select bekommt die ID aus dem Abonnement Tabelle.

+0

danke blackcom, ich glaube nicht, dass es möglich ist, die product.id mit einer WHERE-Klausel zu erhalten, weil andere Felder als die PK nicht eindeutig sind. Gibt es eine SQL for-Schleife, um 3 Einfügungen pro alten Subskriptionsdatensatz zu machen? – Jake