今朝、私はこれと非常によく似た質問をしましたが、見事に答えられました。
ただし、プレイを確認した後、実際の問題はその質問で説明したものよりも少し複雑であることがわかりました. 基本的に、3 つの 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
だから、私は次のanimalような記録を持っているかもしれません:
[myschema].[animals]
--------------------
animal_id = 458
animal_attrib_type_id = 38
animal_attrib_value_id = 23
対応するanimal_attrib_type(id = 38) には、次の値があります。
[myschema].[animal_attrib_types]
--------------------------------
animal_attrib_type_id = 38
animal_attrib_type_name = 'animals.should-make-noise'
対応するanimal_attrib_value(id = 23) には次の値があります。
[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_type_id = 23
animal_attrib_type_name = 'true'
したがって、同じanimalレコードに複数のタイプ/値のペアを含めることができます。この場合、動物はanimal_attrib_type_name" animals.should-make-noise" に対応するanimal_attrib_value_name" " を持っていましたtrue。
実行時には、animal_id(つまり 458) とanimal_attrib_type_id(つまり 38) しかありません。与えられanimal_attrib_value_nameたものだけに対応する適切なものを検索し、その値を静的テキスト (「true」または「false」) に更新できるようにする必要があります。すべて同じ UPDATE ステートメント内から。animal_idanimal_attrib_type_id
上記の質問の答えは、私が述べた問題に対して正しかったのですが、同じ動物に 0+ 型/値の組み合わせがあるため、実際には少し異なる SQL ステートメントが必要です。前もって感謝します!