今日はばかげた日です。これは比較的単純なことだと思いますが、私の脳は私に答えを与えてくれません。
行がオブジェクトのタイプであるテーブルがあります。次のようになります。
id name foo bar house_id
1 Cat 12 4 1
2 Cat 9 4 2
3 Dog 8 23 1
4 Bird 9 54 1
5 Bird 78 2 2
6 Bird 29 32 3
これは私がそれを実装することを選択する方法ではありませんが、それは私が取り組んでいるものです。オブジェクト(猫、犬、鳥、実際にはそれらは実際のビジネスのものです)がアドホックベースでテーブルに追加されました。house_id 1に猫が必要な場合は、猫のレコードが入力されます。house_id3が犬を取得すると、犬のレコードが入力されます。
ここで、このテーブルを更新して、すべてのタイプのオブジェクト(Cat、Dog、Bird)が特定のhouse_idのレコードを持つようにする必要があります。これを行うには、各タイプの単一のレコードを返すselectクエリの結果を挿入します。既存のレコードがない場合に限り、そのタイプの行の「foo」と「bar」の最も早い値を使用します。指定されたhouse_idを持つそのタイプの場合。
したがって、上記のサンプルデータの場合、指定されたhouse_id = 3の場合、selectクエリは次を返します。
name foo bar house_id
Cat 12 4 3
Dog 8 23 3
その後、テーブルに直接挿入できます。
基本的に、指定されたhouse_idを持つその名前の行がない場合は、それぞれの個別の名前の最初の行を返します。
提案を歓迎します。それが助けになるなら、DBエンジンはpostgresです。