Temat: Jak napisać UPDATE z JOINEM zamiast porównania kluczy?
Witam! To mój pierwszy post na tym forum :-)
Przykład uproszczony. Powiedzmy, że mamy dwie tabelki:
1) produkty (id_produkt, id_kat_produktu, cecha_produktu, ...)
2) kat_produktu (id_kat_produktu, cecha_w_slowniku, ...)
,gdzie pole produkty.id_kat_produktu jest referencją do pola w słowniku kat_produktu.id_kat_produktu
Chcąc zrobić UPDATE na tabeli produkty uzależniony od jakiejś cechy w słowniku kat_produktu (można to zagłębiać dalej, ale pozostańmy przy takim przykładzie) napisałem działający przykład:
update produkty p set
cecha_produktu= 'Nowa wartość'
from
kat_produktu kp
where
p.id_kat_produktu = kp.id_kat_produktu
and kp.cecha_w_slowniku = 'wartosc_powodujaca_zmiane'
Chciałbym jednak zrobić to samo, ale z użyciem złączenia - tylko nie wiem jak, ponieważ poniższy kod nie zadziałał (świadomie użyłem left joina zamiast inner joina):
update p set
p.cecha_produktu= 'Nowa wartość'
from
produkty p
left join kat_produktu kp on (kp.id_kat_produktu = p.id_kat_produktu)
where
kp.cecha_w_slowniku = 'wartosc_powodujaca_zmiane'
Pojawił się błąd:
ERROR: relation "p" does not exist (LINE 1)
To oznacza, że PostgreSQL nie rozumie takiego zapisu. Jak w takim razie napisać UPDATE z JOINEM na podanym powyżej przykładzie?