継承関係をモデル化するためのテーブルがあります。それはとてもすべてのプロパティの列を持つ指向列だとのようになります。mainidとサブID> 0と一致する任意の行に親に関連している同じmainidとサブID = 0の任意の行と継承ベーステーブルのUPDATEステートメント
mainid, subid, prop1, prop2, etc.
すべての行であります。このように:
100, 0, 'abc', 123
100, 1, NULL, 456
は(100,1)
が(100,0)
の子であり、(100,1)
ためprop1
を照会することは私に'abc'
を与える必要がありますし、(100,1)
ためprop2
を照会することは私に456
を与える必要があることを意味します。
を更新したい場合は、NULL
フィールドにしたいと思いますが、更新値が'abc'
(parent.prop1フィールドと一致)の場合は、このフィールドを作成します。このためにできる簡単な更新クエリはありますか?私は複数のクエリでこれを行うことができますが、可能であれば、1つの更新クエリと複数のフィールドを一度に更新するために実行したいと考えています。(eg update (100,1).prop1='abc', (100,1).prop2=789, etc.)
これは標準的なSQL(特定のSQLエンジン)
あなたはどのようなデータベース・サーバを使用していますか? –
できません。一度に1行しか更新できません。 – Hogan
@Hogan、1行(子行)を更新したいだけですが、入力値が親と一致する場合はその値をNULLにする必要があります。そうでない場合は、入力値を親のオーバーライドにします。したがって、(100,1).prop1 = 'abc'(100,1).prop1 = 'xyz(100,1).prop1 =' abc ' 'は単に' xyz 'になります。 – rottyguy