У меня есть таблица, которая содержит информацию о группах. В группе может быть любое количество участников. Существует идентификатор группы, а затем идентификатор элемента. Я хочу иметь возможность в одном утверждении определить, существует ли данный набор в таблице
@ groupTable - это пример данных, которые уже существуют в базе данных
@ inputData - это данные, которые я хочу увидеть, если они уже существуют в @ groupTable
declare @groupData table
(
groupIdentifier int,
elementIdentifier uniqueidentifier
)
insert into @groupData values
(1, 'dfce40b1-3719-4e4c-acfa-65f728677700'),
(1, '89e7e6be-cee8-40a7-8135-a54659e0d88c')
declare @inputData table
(
tempGroupIdentifier int,
elementIdentifier uniqueidentifier
)
insert into @inputData values
(42, 'dfce40b1-3719-4e4c-acfa-65f728677700'),
(42, '89e7e6be-cee8-40a7-8135-a54659e0d88c'),
(55, 'dfce40b1-3719-4e4c-acfa-65f728677700'),
(55, '2395a42c-94f4-4cda-a773-221b26ea5e44'),
(55, 'f22db9df-a1f4-4078-b74c-90e34376eff6')
Теперь я хочу выполнить запрос, который покажет взаимосвязь наборов, показывая, какой groupIdentifier связан с каким tempGroupIdentifier. Если подходящего набора нет, мне тоже нужно это знать.
desired output:
groupIdentifier, tempGroupIdentifier
1, 42
null, 55
Есть ли у кого-нибудь предложения о том, как подойти к этой проблеме?
Возможно, я мог бы повернуть строки и объединить все elementIdentifiers в гигантскую строку для каждой группы, в которой затем выполняется равенство, но это не кажется хорошим решением.