![](/img/trans.png)
[英]How can i join two tables with two columns that refers the same column in the second table in SQL Server
[英]How can I join these two tables into the same Sql result
我正在嘗試生成一個SQL查詢,該查詢可以將兩個表連接在一起並返回結果..但第二個表已“展平”。 我不確定這是否是正確的技術術語。 它是非正規化的嗎?
無論如何,有人可以建議我該怎么做嗎?
表: 用戶
UserId Name
1 Pure.Krome
2 John
3 Jill
4 Jane
表: UserAliases
UserAliasId UserId Alias
1 1 Idiot
2 1 PewPew
3 3 BlahBlahBlah
所需結果
UserId Name Aliases
1 Pure.Krome Idiot PewPew
2 John
3 Jill BlahBlahBlah
4 Jane
請注意:
outer join
) 我的問題的另一個示例是想一個StackOverflow問題+標簽。
http://groupconcat.codeplex.com/具有MySQL的GROUP_CONCAT()
的克隆,實現為CLR聚合功能。 我想這不是SQL的問題,但我也可以:
SELECT
[Users].[UserId] AS UserId,
[Users].[Name] AS Name,
GROUP_CONCAT_D([UserAliases].[Alias]," ") AS Aliases
FROM [Users]
OUTER JOIN [UserAliases] ON [Users].[UserId]=[UserAliases].[UserId]
或類似。
尚未測試,請嘗試一下。 我這里沒有服務器。
SELECT a.UserID,
a.[Name],
coalesce(NewTable.NameValues, '') Aliases
FROM Users a LEFT JOIN
(
SELECT UserID,
STUFF((
SELECT ' ' + [Name]
FROM UserAliases
WHERE ( UserID = Results.UserID )
FOR XML PATH('')), 1, 2, '') AS NameValues
FROM UserAliases Results
GROUP BY UserID
) NewTable
on a.UserID = NewTable.UserID
在這種情況下, FOR XML PATH
很方便:
SELECT UserID, Name
, LTRIM(RTRIM((SELECT ' ' + Alias
FROM UserAliases WHERE UserID = u.UserID
FOR XML PATH('')))) AS Aliases
FROM Users u
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.