Мне нужно реализовать правило проверки бизнеса, которое проверяет содержимое двух таблиц. Правило состоит из 3 частей:Выберите результат, когда левое соединение присоединяется только к некоторым строкам
- Если все строки в table1 соответствовать строке в таблице 2, то он должен пройти проверку
- Если все строки в table1 не совпадают строки в table2, то он должен пройти ,
- Если некоторые из строк в таблице 1 присоединяются к таблице2, а другие нет, то это должно завершиться неудачно.
Я добавил три набора данных ниже, чтобы показать, когда он должен пройти и не
Dataset 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
Dataset 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
Dataset 3 (Это должно завершиться неудачно, поскольку ID 2 и 3 в таблице 1 не соответствуют FK в таблице 2):
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
Вы можете объединить эти две таблицы, выполнив следующие действия:
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
Почему вы выписываете 'one' иногда и' 1' в другое время, но никогда не выписываете 'two', только' 2' – vol7ron
@ vol7ron - Теперь, когда вы упоминаете, и я останавливаюсь и думаю об этом, я, вероятно, это много времени, но я понятия не имею, почему. – Greg