Sql server 根据关系表从不同的表中获取结果

Sql server 根据关系表从不同的表中获取结果,sql-server,relationship,Sql Server,Relationship,继续我以前的职务: 请参阅fiddle,了解我试图实现的目标: 我有两个附加表(组织和组),它们与用户表有关系。唯一的区别是关系在关系表中以另一种方式定义 我想要的是为每个用户提供一行,并从其他表中获取附加列 我现在得到的是: Id Name PhoneNumber Organization GroupName 1 John 1234 Organization1 (null) 1 John 1234 (null) Group1 2 Ma

继续我以前的职务:

请参阅fiddle,了解我试图实现的目标:

我有两个附加表(组织和组),它们与用户表有关系。唯一的区别是关系在关系表中以另一种方式定义

我想要的是为每个用户提供一行,并从其他表中获取附加列

我现在得到的是:

Id  Name    PhoneNumber Organization    GroupName
1   John    1234    Organization1   (null)
1   John    1234    (null)  Group1
2   Mary    5555    Organization2   (null)
3   Michael (null)  Organization2   (null)
3   Michael (null)  (null)  Group2
我想要的是:

Id  Name    PhoneNumber Organization    GroupName
1   John    1234    Organization1   Group1
2   Mary    5555    Organization2   (null)
3   Michael (null)  Organization2   Group2

你能帮我理解这里发生了什么,我该如何解决这个问题吗?

我看到了你的例子,也许你需要一个
小组

SELECT u.Id
    ,u.Name
    ,max(p.PhoneNumber) AS PhoneNumber
    ,Max(c.Name) as Organization
    ,Max(g.Name) as GroupName
FROM Users u
LEFT JOIN Relationship r ON r.Id = u.Id
LEFT JOIN Phone p ON p.Id = r.ChildId
LEFT JOIN Relationship rr ON rr.ChildId = u.Id
LEFT JOIN Organizations c ON c.Id = rr.Id
LEFT JOIN Groups g ON g.Id = rr.Id
GROUP BY u.Id
         ,u.Name