2 つのテーブルの内容をチェックするビジネス検証ルールを実装する必要があります。ルールには 3 つの部分があります。
- table1 のすべての行が table 2 の行と一致する場合、検証に合格する必要があります
- table1 のすべての行が table2 の行と一致しない場合は、パスする必要があります。
- table1 の行の一部が table2 に結合し、他の行が結合しない場合、失敗するはずです。
以下に 3 つのデータセットを追加して、いつ成功し、いつ失敗するかを示します。
データセット 1 (これはパスするはずです):
Table1
ID Other Column
1 xxxx
2 xxxx
3 xxxx
4 xxxx
Table2
ID FK OtherColumn
1 1 xxxx
2 2 xxxx
3 3 xxxx
4 4 xxxx
データセット 2 (これはパスするはずです):
Table1
ID Other Column
1 xxxx
2 xxxx
3 xxxx
4 xxxx
Table2
ID FK OtherColumn
1 5 xxxx
2 6 xxxx
3 7 xxxx
4 8 xxxx
データセット 3 (テーブル 1 の ID 2 と 3 がテーブル 2 の FK と一致しないため、これは失敗するはずです):
Table1
ID Other Column
1 xxxx
2 xxxx
3 xxxx
4 xxxx
Table2
ID FK OtherColumn
1 1 xxxx
2 5 xxxx
3 6 xxxx
4 4 xxxx
次のようにして、2 つのテーブルを結合できます。
SELECT *
FROM Table1
INNER JOIN Table2
ON Table1.ID = Table2.FK
Table2
の各レコードに対して 0 または 1 レコードが含まれます。Table1
これまでのところ、これを行う方法を見つけた唯一の方法は、選択して行数を比較することです。
SELECT COUNT(Table1.ID)
FROM Table1
INNER JOIN Table2
ON Table1.ID = Table2.FK
そして比較して
SELECT COUNT(Table1.ID)
FROM Table1
うまくいくと思いますが、これを行うより簡単な方法があるべきだと感じています。
違いがある場合、データベースは Microsoft SQL 2008 です