2009-09-08 7 views
0

Je vais obtenir des données du monde réel de mon mieux pour cette requête avec laquelle je vais avoir du mal.SQL Comparaison de 2 tables avec une table de liens

Tableau HierarchySet:

HierarchySetId ClientId 
22    1866 
23    1866 

Tableau utilisateur:

UserId UserName ClientId 
76  TestUser 1866 

Tableau LinkTable:

LinkId UserId OrganisationId HierarchySetId 
20241  76  1822    23 
20242  76  1877    23 

Maintenant, une note sur le champ "LinkTable" "OrganisationId" est qu'ils sont juste une référence sans rapport avec l'une de ces tables, c'est juste un exemple de comment un utilisateur peut avoir plusieurs lignes dans ce Ce que j'essaie de faire ici, est de spécifier un HierarchySetId et un ClientId - J'ai besoin de trouver tous les utilisateurs de ce ClientId qui n'ont pas de lignes dans Linktable pour HiearchySetId - I suis absolument stupéfait! - J'utilise SQL Server 2008.

Merci!

Edit: Merci Preet ci-dessous, la requête finale est sorti comme ceci:

SELECT * 
FROM User u 
INNER JOIN HierarchySet h ON h.ClientId = u.ClientId 
LEFT OUTER JOIN LinkTable l ON 
    l.HierarchySetId = h.HierarchySetId 
    AND u.UserId = l.UserId 
WHERE l.HierarchySetId IS NULL and l.UserId IS NULL 
AND u.ClientId = xxxxxx 
AND h.HierarchySetId = xxxxxx 

Répondre

1
select * 
from user u 
inner join hierarchyset h on h.clientid = u.clientid 
left outer join linktable l on 
    l.hierarchsetid = h.hierarchsetid 
and u.userId = l.userId) 
where l.hierarchsetid is null and l.userId isnull 
+0

Celui-ci a fonctionné parfaitement, je vous remercie beaucoup. – ShaunO

+1

(sifflets et semble penaud - c'était une conjecture complète!) –

Questions connexes