Aktualizacja Postgres z wewnętrznym połączeniem w 2 tabelach?
Mam 3 tabele w mojej lokalnej bazie danych Postgres:
[myschema].[animals]
--------------------
animal_id
animal_attrib_type_id (foreign key to [myschema].[animal_attrib_types])
animal_attrib_value_id (foreign key to [myschema].[animal_attrib_values])
[myschema].[animal_attrib_types]
--------------------------------
animal_attrib_type_id
animal_attrib_type_name
[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id
animal_attrib_value_name
W czasie wykonywania poznamanimal_id
. Muszę uruchomić SQL, aby zaktualizowaćanimal_attribute_value_name
związane z tym elementem, więc coś w stylu:
UPDATE
animal_attribute_values aav
SET
aav.animal_attribute_value_name = 'Some new value'
WHERE
# Somehow join from the provided animal_id???
Może będę musiał zrobić jakiś rodzaj zagnieżdżeniaSELECT
lubINNER JOIN
w środkuWHERE
klauzula, ale nie wiem, jak to zrobić. Z góry dziękuję!
Edytować:
Powiedzmy, że mamanimal
nagrywaj z następującymi wartościami:
[myschema].[animals]
--------------------
animal_id = 458
animal_attrib_type_id = 38
animal_attrib_value_id = 23
I odpowiadająceanimal_attrib_value
(o id = 23) ma następujące wartości:
[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id = 23
animal_attrib_value_name = 'I am some value that needs to be changed.'
W czasie wykonywania mam tylkoanimal_id
(458). Muszę sprawdzić odpowiednianimal_attrib_value
(23) i zmień jegoanimal_attrib_value_name
do'Some new value'
, wszystko wewnątrz pojedynczej instrukcji UPDATE.