UPDATE und JOIN Statement

Maris

Aktiver Benutzer
Beiträge
32
Hallo liebe Formenmitglieder,

ich bin kein SQL Profi aber ich habe folgendes Problem. Ich habe eine Tabelle erstellt:

CREATE TABLE dialog_db.test_plz
(
rPLZ int(5) NOT NULL,
PRIMARY KEY (`rPLZ`),
UNIQUE INDEX `rPLZ` (`rPLZ` ASC)
);

Habe diese dann mit Postleitzahlen befüllt:

LOAD DATA LOCAL
INFILE '/work/operations/test/PLZ_Top100.txt' INTO TABLE dialog_db.test_plz
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Im Anschluss habe ich die Tabelle um Spalten erweitert:

ALTER TABLE dialog_db.test_plz
ADD COLUMN MdId VARCHAR(255), ADD COLUMN Eingenschaften VARCHAR(255),
CHARACTER SET 'latin1' NULL DEFAULT NULL;

Und jetzt möchte ich die zwei zusätzlichen Zellen befüllen mit JOIN und UPDATE :

Datenbank =dialog_db für beide Tabellen

Meine Tabelle= test_plz mit rPLZ

Datentabelle = md_base mit Plz

Sprich: Schreibe mir in die Tabelle test_plz alle Werte aus den Spalten MdId UND Eingenschaften der Tabelle md_base bei den die PLZ gleich ist.

Das bekomme ich leider nicht hin. Kann mir bitte jemand helfen?

Beste Grüße,
Maris
 
Werbung:
Fangen wir mal ganz langsam an.

Eine PLZ als INT zu speichern ist falsch, meine PLZ hier beginnt mit 0. Gleichzeitig einen PK und einen Unique Index zu vergeben ist auch Murks, weil ein PK per se schon Unique ist.


Die Syntax für Update ist (in PostgreSQL zumindest):

Code:
test=*# \h update
Anweisung:  UPDATE
Beschreibung: aktualisiert Zeilen einer Tabelle
Syntax:
[ WITH [ RECURSIVE ] With-Anfrage [, ...] ]
UPDATE [ ONLY ] Tabellenname [ * ] [ [ AS ] Alias ]
  SET { Spaltenname = { Ausdruck | DEFAULT } |
  ( Spaltenname [, ...] ) = ( { Ausdruck | DEFAULT } [, ...] ) |
  ( Spaltenname [, ...] ) = ( Sub-SELECT )
  } [, ...]
  [ FROM From-Liste ]
  [ WHERE Bedingung | WHERE CURRENT OF Cursor-Name ]
  [ RETURNING * | Ausgabeausdruck [ [ AS ] Ausgabename ] [, ...] ]

Also Du suchst sinngemäß...

UPDATE tabelle SET ... FROM tabelle, tabelle2 WHERE tabelle.spalte=tabelle2.spalte

Das schaffst Du!
 
Ich glaube MySQL kann weder die Syntax noch die Referenz auf die zu aktualisierende Tabelle im Update. Da muss man vermutlich tricksen.
 
Werbung:
Das mit dem SET verstehe ich noch nicht wirklich ganz. Aber so vielleicht?

UPDATE dialog_db.test_plz
SET MdId, Eigenschaften
FROM test_plz, md_base
WHERE md_base.Plz = test_plz.rPLZ;

Das andere habe ich korrigiert:

CREATE TABLE dialog_db.test_plz
(
rPLZ varchar(5) NOT NULL,
PRIMARY KEY (`rPLZ`),
);
 
Zurück
Oben