MySQL - Aus mehreren Tabellen mach eine

eugen-belz

Grünschnabel
Hallo Leute,

habe mehrere Tabellen mit verschiedenen Spalten und möchte diese in einer Tabelle zB. T1 zusammenfügen.

Die Struktur von T1 ist folgend:
# Name Typ Kollation Attribute Null Standard
1 DEPOT int(3) Ja NULL // von T2
2 LINIE int(2) Ja NULL // von T3 usw...

Nun sage ich
SQL:
INSERT INTO T1 (DEPOT) SELECT DEPOT FROM T2
er kopiert alle Werte. Mache ich das selbe mit T3, werden die Werte unten eingefügt und nicht die null Parameter überschrieben (was ich eigentlich erreichen möchte).

Wie bekomme ich es hin, dass er die Werte nebeneinander in beiden Spalten einfügt?

Vielen Dank & Gruß,

eugen
 
Hallo eugen,

sind in T1 nicht schon Werte vorhanden? Denn wenn schon, dann wirst du so nie den gewünschten Effekt erzielen. Ein INSERT erstellt immer einen neuen Datensatz (eine neue Zeile). Wenn du die Werte aus T2 und T3 zu den vorhanden Sätzen in T1 anhängen willst, brauchst du ein UPDATE. Dann musst du aber über einen Index deine Werte joinen.

Falls T1 wirklich leer ist, dann ist der erste INSERT ok. Für die zweite Tabelle brauchst du dann aber wieder gleichermaßen ein UPDATE, da du sonst ja nur neue Sätze anlegst.
Dafür musst du aber wie gesagt irgendeinen eindeutigen Wert haben, über den man erkennen kann, welche Datensätze aus T2 und T3 zusammen gehören. Ansonsten wird das nix.


Gruß
Daniel
 
AHH! Vielen Dank!

Bin noch recht neu in SQL und habe den Fehler jetzt begriffen. Nun mal als erste Spalte eine ID int(11) unsigned mit auto_increment vorgeschalten, da alle Tabellen gleich lang sind. Und nun geht das ach mit ..
SQL:
UPDATE T1 AS a JOIN T3 AS b ON a.id = b.id SET a.LINIE = b.LINIE WHERE a.LINIE is null

Danke, danke! Wird nun geschlossen.:)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück