2009-09-08 77 views
0

我将尽我所能地获得一些真实世界的数据,但我很难与此查询结合使用。SQL将2个表格与链接表格进行比较

表HierarchySet:

HierarchySetId ClientId 
22    1866 
23    1866 

表用户:

UserId UserName ClientId 
76  TestUser 1866 

表LinkTable:

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

现在,在 “LinkTable” 记 “OrganisationId” 字段是,他们只是与这些表中的任何一个都无关的引用,它只是一个用户如何在其中拥有多行的示例表和相同的UserId和HierarchySetId

我在这里试图做的是与指定一个HierarchySetId和一个ClientId - 我需要找到所有用户的该ClientId没有行的Linktable为该Hiea​​rchySetId - 我绝对是绝对的! - 我正在使用SQL Server 2008.

谢谢!

编辑:下面感谢普里特,最后查询出来的是这样的:

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 

回答

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

这一个完美无缺,非常感谢你。 – ShaunO 2009-09-08 08:31:22

+1

(fx。口哨声,看起来不好意思 - 这是一个完全的猜测!) – 2009-09-08 08:32:00