检测与表关联的多个记录

时间:2010-08-05 13:42:46

标签: sql-server

我有一个有两个表的SQL Server 2008数据库。这两个表是CoreGroup和CoreGroupMember。请注意,我没有设置这些表。无论如何,表结构是:

CoreGroup
---------
ID
GroupMember1MemberName
GroupMember2MemberName
GroupMember3MemberName
GroupMember4MemberName

CoreGroupMember
---------------
ID
CoreGroupID
MemberName 

我需要确定与具有特定MemberName的CoreGroupMember关联的CoreGroup记录数。虽然有一个问题真的让我陷入困境。某些CoreGroup记录只有一个成员与之关联。我需要检索具有多个 CoreGroupMember记录的CoreGroup记录,其中至少有一个记录具有特定的MemberName。我似乎无法弄清楚多记录部分。有人可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我会抓住它,希望我能正确理解这些要求。首先,我使用cte查找具有多个成员的所有组,然后使用该结果集查找具有特定成员的组。

with cteMultipleMembers as (
    select cg.ID, COUNT(*) as MemberCount
        from CoreGroup cg
            inner join CoreGroupMember cgm
                on cg.ID = cgm.CoreGroupID
        group by cg.ID
        having COUNT(*) > 1
)
select mm.ID
    from cteMultipleMembers mm
        inner join CoreGroupMember cgm
            on mm.ID = cgm.CoreGroupID
                and cgm.MemberName = @YourMemberName