ich bin PostgreSQL-Neuling und möchte folgendes Problem lösen:
Ich habe eine View erstellt auf der Grundlage einer Tabelle, die zum Teil falsche Daten enthält. Diese falschen Daten möchte ich mit den Korrekturdaten aus einer anderen Tabelle selektiv ersetzen.
Ich probiere den UPDATE-Befehl aus, aber irgendetwas ist noch falsch an meinem Code. Es läuft nicht.
Wie kann ich das Problem besser lösen?
Vielen Dank vorab für die Unterstützung.
mfg
Mike
Die erstellte View heißt: vw_korrektur_teams_kapa
SELECT
team_id, team_name, pi, value
FROM im_teams_kapa
UPDATE vw_korrektur_teams_kapa
SET value = tkk.value
FROM teams_kapa_korrekturen tkk
JOIN vw_korrektur_teams_kapa ktk on ktk.pi = tkk.pi and ktk.team_id = tkk.team_id
WHERE ktk.pi = tkk.pi and ktk.team_id = tkk.team_id
ich denke, Du kommst eher zum Ziel, wenn Du auf Deinen View mit den falschen Daten und der Korrekturtabelle wieder einen neuen View erstellst - und nicht versuchst, den View upzudaten.
edb=*# select * from wrong_data ;
id | data
----+------
1 | 10
2 | 20
3 | 3
4 | 40
(4 rows)
edb=*# select * from korrektur ;
id | data
----+------
3 | 30
(1 row)
edb=*# with x as (select w.id, w.data from wrong_data w left join korrektur k on w.id = k.id) select x.id, coalesce(k.data, x.data) from x left join korrektur k on x.id=k.id;
id | coalesce
----+----------
3 | 30
1 | 10
2 | 20
4 | 40
(4 rows)
edb=*#