2017-06-30 34 views
0

从我以前的帖子继续:获取来自不同表的结果

Get results from multiple tables based on relationship table

见捣鼓什么,我试图完成:

http://sqlfiddle.com/#!6/657f3/3

我有两个与用户表有关系的其他表(组织和组)。唯一的区别是关系在关系表中被定义为另一种方式。

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

什么我现在越来越:

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 

你能帮助我理解这里发生了什么,我怎么能解决这个问题?

回答

1

我看到你的榜样,也许你需要一个group by

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