Leere Spalte mit SQL aus anderen DB-Tabellen befüllen
-
Hallo,
ich versuche seit einiger Zeit vergeblich mittels SQL-Abfrage eine Tabellen-Spalte meiner Datenbank richtig zu befüllen.
Diverse SQL-Bücher bzw. das Internet haben mich nicht weiter gebracht. Ich denke für Euch dürfte mein Anliegen kein Problem sein.In meiner MySQL-Datenbank befinden sich in der Umbauphase vereinfacht 3 Tabellen:
(1) Kunde
Kd-Nr (Primary)
Kd-Name
Kd-Vorname(2) Artikel
Art-Nr (Primary)
Art-Bezeichnung(3) Auftrag
Auftrags-Nr (Primary)
Art-Nr
Art-Bezeichnung
Kd-Name
Kd-VornameTabelle (3) soll zukünftig ersetzt werden.
Kd-Nr, Art-Nr sollen nach den Umbauten als Fremdschlüssel mit den Tabellen Kunde bzw. Artikel verbunden werden
(3) Auftrag_z
Auftrags-Nr (Primary)
Art-Nr
Kd-NrUm das zu erreichen habe ich Tabelle (3) kopiert, die Spalten Art-Bezeichnung, Kd-Name u Kd-Vorname gelöscht.
sowie die Spalte Kd-Nr neuangelegt.
Leider gelingt es mir nicht diese neue Spalte mit SQL-Befehl aus den bestehenden Tabellen richtig zu befüllen.Meine Versuche mit folgendem bzw. ähnlichen Konstruktionen waren erfolglos
INSERT INTO Auftrag_z (Kd-Nr) SELECT k.Kd-Nr FROM Kunde k, Auftrag a WHERE k.Name = a.Name AND k.Vorname = a.Vorname
Kann mir jemand helfen? Vielen Dank, schon 'mal
-
hm, ich weiss nicht ob der dash (also das -) in Tabellen/Spaltennamen erlaubt ist, üblich ist eher underscore (_).
-
Entweder alles zusammen einfügen
SET IDENTITY_INSERT ON; INSERT [Auftrag_z] ([Auftrags-Nr], [Art-Nr], [Kd-Nr]) SELECT a.[Auftrags-Nr], a.[Art-Nr], k.[Kd-Nr] FROM [Auftrag] a LEFT JOIN [Kunde] k ON k.[Kd-Name] = a.[Kd-Name] AND k.[Kd-Vorname] = a.[Kd-Vorname];
oder per UPDATE
UPDATE [Auftrag_z] SET [Kd-Nr] = ( SELECT k.[Kd-Nr] FROM [Kunde] k WHERE k.[Kd-Name] = [Auftrag_z].[Kd-Name] AND k.[Kd-Vorname] = [Auftrag_z].[Kd-Vorname] );
p.S.: die INSERT Variante baut Mist, wenn es mehrere Kunden mit dem gleichen Namen gibt, anstatt einen Fehler zu verursachen. Hab aber grad keinen Geist das nochmal umzuschreiben.
-
@hustbaer,
vielen Dank, ich habe Deinen Vorschlag mit UPDATE eingesetzt. Das klappt 1AAAA! :). Den SQL kann ich auch gut nachvollziehen.phlox81 schrieb:
weiss nicht ob der dash (also das -) in Tabellen/Spaltennamen erlaubt ist
Habe im MySQL-Browser nochmal im Tabellennamen ein "-" eingebaut. Das geht ohne Fehlermeldung. Du hast aber Recht, vielleicht sollte man das wegen Verwechslung mit "Minus" etc. vermeiden.