データベースに監査ログを実装しているので、すべてに CreatedAt 列と RemovedAt 列があります。ここで、オブジェクト グラフのすべてのリビジョンを一覧表示できるようにしたいと考えていますが、そのために考えられる最善の方法は、共用体を使用することです。一意の CreatedAt ID と RemovedAt ID をすべて取得する必要があります。
州のある国のリストを取得している場合、ユニオンは次のようになります。
SELECT c.CreatedAt AS RevisionId from Countries as c where localId=@Country
UNION
SELECT p.CreatedAt AS RevisionId from Provinces as p
INNER JOIN Countries as c ON p.CountryId=c.LocalId AND c.LocalId = @Country
UNION
SELECT c.RemovedAt AS RevisionId from Countries as c where localId=@Country
UNION
SELECT p.RemovedAt AS RevisionId from Provinces as p
INNER JOIN Countries as c ON p.CountryId=c.LocalId AND c.LocalId = @Country
より複雑なクエリの場合、これは非常に複雑になり、パフォーマンスが非常に低下する可能性があるため、誰かがより良いアプローチを考えられるかどうかを確認したかった. これは MSSQL サーバーにあります。
これはfrom句で使用されており、実際のデータはこれに結合することから得られるため、すべてを単一のリストに含める必要があります。