Postgres atualizar com uma junção interna em 2 tabelas?
Eu tenho 3 tabelas no meu banco de dados local do 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
Em tempo de execução eu saberei oanimal_id
. Eu preciso executar o SQL para atualizar oanimal_attribute_value_name
associado a este item, então algo como:
UPDATE
animal_attribute_values aav
SET
aav.animal_attribute_value_name = 'Some new value'
WHERE
# Somehow join from the provided animal_id???
Eu posso ter que fazer algum tipo de aninhamentoSELECT
ouINNER JOIN
dentro deWHERE
cláusula, mas não sabe como fazer isso. Desde já, obrigado!
Editar:
Vamos dizer que eu tenho umanimal
registro com os seguintes valores:
[myschema].[animals]
--------------------
animal_id = 458
animal_attrib_type_id = 38
animal_attrib_value_id = 23
E o correspondenteanimal_attrib_value
(com id = 23) tem os seguintes valores:
[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id = 23
animal_attrib_value_name = 'I am some value that needs to be changed.'
Em tempo de execução, eu só tenho oanimal_id
(458) Eu preciso procurar o correspondenteanimal_attrib_value
(23) e mudar suaanimal_attrib_value_name
para'Some new value'
, tudo dentro de uma única instrução UPDATE.