Mysql 3 Tabellen zusammenfügen (und Schlüssel neu berechnen?)

mini_xs

Mitglied
Hallo,

habe ein Problem auf dass ich nicht direkt eine Lösung weiß.
Ich möchte den Inhalt von 3 Tabellen mit jeweils dengleichen Spalten zu einer Tabelle zusammenfügen. Habe schon überlegt die Daten ohne Index in die neue Tabelle zu übertragen und dann die Indexspalte neu anzulegen. Das erscheint mir aber arg kompliziert. Geht das einfacher?
Wie soll ich dann den Index neu berechnen? Habe ein Feld mit php Timestamp das zur Orientierung dienen kann.

Hat jemand einen Denkanstoß? Bin mir nämlich gerade nicht im klaren darüber wie ich das (effizient) lösen könnte.


Viele Grüße,

Stefan
 
Tabellen zusammenfügen kannst du mit UNION
Also z.B.:
PHP:
(SELECT * FROM tabelle1) UNION (SELECT * FROM tabelle2)
Bei einem Insert sollte er den Index doch normalerweise selbstständig hochzählen, so du AutoIncrement eingestellt hast.
Oder ist die Tabelle mit einer anderen nur über diesen Index eindeutig verknüpft?
Dann würde das Problem entstehen, dass du so die richtigen Abhängigkeiten verlieren würdest.
 
Hallo,

erstmal danke, UNION funktioniert gut. Habe nun alle 3 Datenbanken in einer.
Gibt es aber einen Befehl der es mir ermöglicht die Indexwerte anhand des Datumsfeldes neu zu berechenen?
Ansonsten müsste ich ein PHP Script schreiben dass das macht, oder?

Viele Grüße,

Stefan
 
Wenn du die Timestamps in beiden Tabellen identisch hättest, dürfte das zum Beispiel so gehen:
PHP:
UPDATE zuUpdatendeTabelle zUT SET TabelleNeuID = (SELECT DISTINCT ID FROM neueTabelle nt WHERE zUT.timestamp = nt.timestamp)
Wäre allerdings quatsch - wenn der Timestamp wirklich eindeutig wäre, würde der ja auch als Schlüssel dienen können. ;)
 
Diese Datenbankendesignerei ist ein Fach für sich.
Ein blödes meiner Meinung nach :-). Aber das wäre kein Problem wenn man nicht im nachhinein immer etwas ändern müsste.

Habe es aber jetzt gelößt bekommen. Habe in die neue Tabelle ein normales INT Feld eingefügt.
Dann Tabelle nach Datum sortiert und in einer while Schleife Indexwerte verteilt.
Das Datum war nicht wirklich überall unterschiedlich, also habe ich noch überprüft ob der Inhalt und das Datum verschieden sind.
Am Ende musste ich dann noch 2 doppelte Einträge von Hand löschen.
Dannach den alten Index gelöscht, das neue Feld umbenannt und als Index eingesetzt.
Jetzt kann ich sogar meine Abfragen fast gleich weiterbenutzen.



Viele Grüße,

Stefan
 
Zurück