SQL将2个表与链接表进行比较

时间:2009-09-08 08:15:28

标签: sql sql-server tsql sql-server-2008

我将尽力为这个查询获取一些真实数据我很难用。

表层次结构集:

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的行 - 我绝对是STUMPED! - 我正在使用SQL Server 2008。

谢谢!

编辑:感谢下面的Preet,最后的查询就像这样:

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 个答案:

答案 0 :(得分: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