Spalte einer Tabelle aus einer anderen Tabelle füllen, mit Bedingungen

volvisti

Benutzer
Beiträge
7
Hallo zusammen,
ich hab da mal eine (wahrscheinlich einfache) Frage an die Experten.
Hab leider nichts adäquates finden können, oder an der falschen Stelle gesucht. :(

Um die Sache etwas zu verkürzen habe ich einer Test-Db zwei Tabellen aufgebaut.

ursprung beinhaltet die Spalten ID, ArtikelName, Beschreibung -> gefüllt sind alle Spalten
ziel beinhaltet die Spalten, ID, ArtikelName, Beschreibung, Menge, Preis, Land -> hier ist nur die Spalte Beschriebung leer.

Ich möchte in die Tabelle ziel und hier in die Spalte Beschreibung den Inhalt der Spalte Beschreibung der Tabelle ursprung einfügen.
Die Bedingung ist aber, dass die Spalten ArtikelName beider Tabellen gleich sind und dass in der Spalte Land die Kennung 'de' steht.

Wenn ich es richtig verstanden habe, müßte das Statement folgendermaßen lauten:
UPDATE `ziel` SET `Beschreibung` = `ursprung`.`Beschreibung` WHERE `ArtikelName` = `ursprung`.`ArtikelName` AND `Land` ="de"

Lasse ich das Script in meiner Test_db laufen wird mir als Fehler ausgeworfen, dass die Spalte `ursprung`.`ArtikelName` in der WHERE-Klausel nicht gefunden werden konnte.

Wo liegt mein Denkfehler?

Danke schon mal für die Hilfe
 
Werbung:
Code:
test=# create table quelle (id int primary key, val text);
CREATE TABLE
test=*# create table ziel (id int primary key, val text);
CREATE TABLE
test=*# update ziel set val=quelle.val from quelle where ziel.id=quelle.id;
UPDATE 0

soll sollte es prinzipiell gehen. Du hast das FROM vergessen.
 
Hallo akretschmer,
danke für die schnelle Antwort. :rolleyes:
Aber ich glaube fast SQL mag mich nicht :(:(:(
Hab Dein Statement an meine Gegebenheiten angepasst...

UPDATE `ziel` SET `Beschreibung`=`ursprung`.`u_Beschreibung` FROM `ursprung` WHERE `Name`= `ursprung`.`u_Name` AND `Land` = "de"

und bekomme die Fehlermeldung

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM `ursprung` WHERE `Name`= `ursprung`.`u_Name` AND `Land` = "de"' at line 1

die verwendete Version von Maria Db ist 10.1.9
Oh, ich sehe gerade, ich habe den Thread im falschen Forum erstellt.
Sorry. kann ich das irgendwie ändern?
Hätte unter mysql stehen sollen.:mad::mad::mad:

lg
volvisti
 
Probier es mal mit ausschließlich voll qualifizierten Spaltennamen im SET und im WHERE Teil, vielleicht ist eine Spalte nicht eindeutig. Eventuell kann MySQL das aber auch gar nicht.
 
Werbung:
Hab die Lösung gefunden...

Es muß heißen:
UPDATE `ziel`,`ursprung` SET `Beschreibung`=`ursprung`.`u_Beschreibung` WHERE `Name`= `ursprung`.`u_Name` AND `Land` = "de"

dann geht's
Hinter dem Update-Befehl müssen beide Datenbanken als Referenz angegeben werden.
From gibt es scheinbar bei MySQL nicht.

Einfach, wenn man's weiß :cool: ;)

Danke für die Denkansätze
 
Zurück
Oben