J'ai une table qui contient des informations sur les groupes. Il peut y avoir un nombre quelconque de membres dans un groupe. Il y a un identifiant de groupe et ensuite un identifiant d'élément. Je veux pouvoir en une seule instruction de déterminer si oui ou non un ensemble donné existe dans la tableTSql égalité sur les groupes de lignes
@groupTable est un exemple des données qui existe déjà dans la base de données
@inputData est les données que je veulent voir si elle existe déjà dans @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')
maintenant, je veux exécuter une requête qui montrera la relation des ensembles, montrant que IdentifiantGroupe est associée à qui tempGroupIdentifier. S'il n'y a pas d'ensemble correspondant alors j'ai besoin de le savoir aussi.
desired output:
groupIdentifier, tempGroupIdentifier
1, 42
null, 55
Quelqu'un at-il des suggestions sur la façon d'aborder ce problème?
Je pourrais probablement faire pivoter les lignes et concaténer tous elementIdentifiers dans une chaîne géante pour chaque groupe qui fait alors l'égalité, mais cela ne semble pas être une bonne solution.
Si vous avez à la fois sous forme de tableaux (réel et température), ne serait pas une gauche join faire le travail? ou suis-je en train de rater le vrai problème ici? – Syska
Dans vos données d'exemple, la valeur 'dfce40b1-3719-4e4c-acfa-65f728677700' existe deux fois dans votre table @inputdata; était-ce intentionnel? –
@Syska: oui, mais ce n'est pas "par ligne" mais "par ensemble de lignes" – gbn