Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

mySQL: daten von Tabelle zu Tabelle kopieren, Anzahl Felder

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Anonymous

Beitrag von Anonymous » 26.08.2006, 15:20

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....

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Fox Mulder
PostRank 8
PostRank 8
Beiträge: 804
Registriert: 16.11.2004, 09:06

Beitrag von Fox Mulder » 26.08.2006, 16:12

Das schon mal probiert?

Code: Alles auswählen

CREATE TABLE new_tbl SELECT * FROM orig_tbl;
Gruss

Anonymous

Beitrag von Anonymous » 26.08.2006, 16:26

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....

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 26.08.2006, 17:31

Code: Alles auswählen

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

Anonymous

Beitrag von Anonymous » 26.08.2006, 17:48

ne, leider nicht...

thefly
PostRank 8
PostRank 8
Beiträge: 822
Registriert: 11.06.2006, 08:25

Beitrag von thefly » 26.08.2006, 19:08

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

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 26.08.2006, 23:37

Doch, das ist aber laaaaaaangsamer.

Fox Mulder
PostRank 8
PostRank 8
Beiträge: 804
Registriert: 16.11.2004, 09:06

Beitrag von Fox Mulder » 27.08.2006, 05:41

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?

Anonymous

Beitrag von Anonymous » 29.08.2006, 07:57

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...

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag