2017-02-23 67 views
1

我有一个用户表,电子邮件表和关系电子邮件表。一些用户有多个电子邮件地址。 当使用如何使用XPath获取单行值?

select U.Id,U.Name,E.Name from RelationalEmail AS RE 
INNER JOIN Email AS E ON E.Id = RE.EmailId 
INNER JOIN User AS U ON U.Id=RE.userId 

当然,我得到的结果是这样的:

UserId Name  Email 
1   Olcay [email protected] 
1   Olcay [email protected] 
2   John  [email protected] 
2   John  [email protected] 

但我不想重复的用户, 我试图得到这样的结果:

UserId Name  Email  
1   Olcay [email protected], [email protected] 
2   John  [email protected], [email protected] 

我的人表:

UserId Name  
    1   Olcay  
    2   John 

我的电子邮件表:

EmailId Name 
    7   [email protected] 
    8   [email protected] 
    9   [email protected] 
    10  [email protected] 

我RelationalEmail表:

Id userId EmailId 
    1  1  7 
    2  1  8 
    3  2  9 
    4  2  10 

我的老师说我应该做的是使用XPath。但我不知道XPath。我搜索了一下,但是我找不到我的问题的答案,或者我无法理解。

在此先感谢

+0

看看[这](http://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server)的答案。 –

+0

分享更多详情。目前我没有看到这个问题是如何与'XPath'相关的 – Andersson

回答

1

如果通常是两个emailsname,那么这里是一个办法

select UserId, 
     Name, 
     Email = Min(Email), 
     Email2 = Max(Email) 
From yourtable 
Group by UserId, 
     Name 

如果你能有N数量emailsname,那么你需要dynamic pivot