Werte von einer Tabelle in die andere || UPDATE mit JOIN ?

Hallo, ich habe eine Tabelle für mein personal und jeweils eine für untergeordnete Daten bei kunden, mitarbeitern etc.

Jetzt hat sich ergeben dass ich eine Spalte die erst nur für eine Zielgruppe bestimmt war für alle in die Personal Tabelle übernehmen muss.

Eigentlich nicht schwer wenn ein UPDATE mit JOIN klappen würde aber leider meckert Postgres dort dass an JOIN an :frowning:

Wiefolgt sieht mein UPDATE aus, kann mir da einer nen Lösungsweg anbieten oder sagen was ich an der Syntax ändern muss?
Ich währe echt dankbar!

Update:

UPDATE personal SET personal.status = kunde.status
JOIN kunde ON personal.personalid = kunde.personalid

Fehler:

syntax error at or near "JOIN" at character 62

[code
update personal set status = (select status from kunde where personal.id=kunde.id);
[/code]

nicht ganz Deine Spaltennamen, das überlasse ich Dir zur Übung.

Beispiel:

test=# create table personal (id int);
CREATE TABLE
test=*# create table kunde (id int, status int);
CREATE TABLE
test=*# insert into kunde (id,status) values (1,1);
INSERT 0 1
test=*# insert into kunde (id,status) values (2,2);
INSERT 0 1
test=*# insert into kunde (id,status) values (3,3);
INSERT 0 1
test=*# insert into personal (id) values (1);
INSERT 0 1
test=*# insert into personal (id) values (2);
INSERT 0 1
test=*# insert into personal (id) values (3);
INSERT 0 1
test=*# commit;
COMMIT
test=# alter table personal add column status int;
ALTER TABLE
test=*# update personal set status = (select status from kunde where kunde.id=personal.id);
UPDATE 3
test=*# select * from personal ;
 id | status
----+--------
  1 |      1
  2 |      2
  3 |      3
(3 rows)

Andreas

Ah, OK mit Subselects geht es und hat auch mein Problem gelöst :slight_smile: THx

Aus Interesse aber noch die Frage:
Kann man denn auch UPDATE´s mit JOIN´s in Postgres machen?

so?

update personal set status = kunde.status from kunde where kunde.id=personal.id;

sieht zumindest schöner aus…

Andreas

Achso :smiley:
Ja, genau so dachte ich mir das nur dass ich irgendwie die Anweisung “JOIN” da einbauen wollte aber ist ja eigentlich garnicht nötig :slight_smile: THx!!