ローカルのPostgresデータベースに3つのテーブルがあります。
[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
実行時にanimal_id
がわかります。このアイテムに関連付けられているanimal_attribute_value_name
を更新するには、SQLを実行する必要があるため、次のようになります。
UPDATE
animal_attribute_values aav
SET
aav.animal_attribute_value_name = 'Some new value'
WHERE
# Somehow join from the provided animal_id???
SELECT
句内で何らかのネストされたWHERE
またはINNER JOIN
を実行する必要があるかもしれませんが、これを行う方法がわかりません。前もって感謝します!
編集:
次の値を持つanimal
レコードがあるとします。
[myschema].[animals]
--------------------
animal_id = 458
animal_attrib_type_id = 38
animal_attrib_value_id = 23
また、対応するanimal_attrib_value
(id = 23)の値は次のとおりです。
[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id = 23
animal_attrib_value_name = 'I am some value that needs to be changed.'
実行時には、animal_id
(458)しかありません。対応するanimal_attrib_value
(23)を検索し、そのanimal_attrib_value_name
を'Some new value'
に変更する必要があります。これらはすべて、単一のUPDATEステートメント内にあります。
UPDATE
animal_attribute_values aav
SET
animal_attribute_value_name = 'Some new value'
FROM animals aa
WHERE aa.animal_id = 458
AND aa.animal_attrib_value_id = aav.animal_attrib_value_id
;
あなたはこの権利のような何かを求めていますか..?
update animal_attribute_values aav
set aav.animal_attribute_value_name = 'Some new value'
where aav.animal_attrib_value_id in (
select a.animal_attrib_value_id where a.animal_id=458)
これを試して..