Seite 1 von 1

mySQL: daten von Tabelle zu Tabelle kopieren, Anzahl Felder

Verfasst: 26.08.2006, 15:20
von net(t)worker
Hallo zusammen,

ich bin gerade dabei ein phpscript zu ändern, dabei soll u.a. eine Tabelle mit einem primary key ergänzt werden. also schnell ein

alter table tabelle1 add id int not null auto_increment primary key first

und das zusätzliche Feld ist da...

Nun tritt aber ein problem auf, dieses Script liest Daten in eine Tabelle (tabelle2) um diese daten dann in die Haupttabelle(tabelle1) rüberzukopieren:

INSERT INTO `tabelle1` SELECT * FROM `tabelle2`

Da tabelle1 nu aber das zusätzliche feld mit dem primary key hat, ist die Anzahl der Felder unterschiedlich und somit gibts einen fehler beim kopieren.... d.h. der Kopiervorgang bricht sofort ab...

gibts da jetzt eine schnelle elegante Lösung?

Jetzt jeden datensatz einzeln aus tabelle2 auslesen und dann per insert in tabelle1 schreiben, kann es ja nicht sein....

Verfasst:
von

Verfasst: 26.08.2006, 16:12
von Fox Mulder
Das schon mal probiert?

Code: Alles auswählen

CREATE TABLE new_tbl SELECT * FROM orig_tbl;
Gruss

Verfasst: 26.08.2006, 16:26
von net(t)worker
Fox Mulder hat geschrieben:Das schon mal probiert?

Code: Alles auswählen

CREATE TABLE new_tbl SELECT * FROM orig_tbl;
Gruss
das bringt mich ja nicht weiter, es soll ja keine neue Tabelle erstellt werden, nur Daten von der einen in die andere übertragen werden, wobei die zieltabelle auch noch andere Daten enthält, also keine 1:1 Kopie ist....

hab nu aber ne Lösung gefunden:

INSERT INTO `tabelle1` SELECT NULL, feld1, feld2, feld3 FROM `tabelle2`

So habe ich eine korrekte Anzahl von feldern und das auto_increment in tabelle1 funktioniert. Nachteil ist nun nur, dass ich alle felder von tabelle2 einzeln aufzählen muss....

Verfasst: 26.08.2006, 17:31
von Southmedia

Code: Alles auswählen

INSERT INTO `tabelle1` SELECT NULL, * FROM `tabelle2`
funktioniert nicht?

Verfasst: 26.08.2006, 17:48
von net(t)worker
ne, leider nicht...

Verfasst: 26.08.2006, 19:08
von thefly
Auch auf die Gefahr hin irgendwas nicht verstanden zu haben:

Tät's nicht eine PHP Schleife die die eine Tabelle zeilenweise ausliest und direkt wieder in die Neue schreibt?

Gruß
thefly

Verfasst: 26.08.2006, 23:37
von Southmedia
Doch, das ist aber laaaaaaangsamer.

Re: mySQL: daten von Tabelle zu Tabelle kopieren, Anzahl Fel

Verfasst: 27.08.2006, 05:41
von Fox Mulder
net(t)worker hat geschrieben:INSERT INTO `tabelle1` SELECT * FROM `tabelle2`

Da tabelle1 nu aber das zusätzliche feld mit dem primary key hat, ist die Anzahl der Felder unterschiedlich und somit gibts einen fehler beim kopieren....
Kannst Du die Zieltabelle nicht auch um das zusätzliche Feld erweitern?

Re: mySQL: daten von Tabelle zu Tabelle kopieren, Anzahl Fel

Verfasst: 29.08.2006, 07:57
von net(t)worker
Fox Mulder hat geschrieben:
net(t)worker hat geschrieben:INSERT INTO `tabelle1` SELECT * FROM `tabelle2`

Da tabelle1 nu aber das zusätzliche feld mit dem primary key hat, ist die Anzahl der Felder unterschiedlich und somit gibts einen fehler beim kopieren....
Kannst Du die Zieltabelle nicht auch um das zusätzliche Feld erweitern?
die Zieltabelle ist die Tabelle mit dem zusätzlichen feld... :wink:

nu ist es eh feddich, meine Lösung funktionierte, der Auftrag ist abgeschlossen und die Rechnung auch schon geschrieben...