我有以下 2 个表:
A) 表格
正在关注
id fkUserName follow_fkUserName
用户个人资料
id fkUserName Name Surname
B)我正在尝试做什么
我想按如下方式加入这两个表:
id User_fkUserName User_Name User_Surname Followed_fkUserName Followed_Name Followed_Surname
C) 我的问题:
我的问题是,当我尝试通过 View 加入时,我没有得到预期的结果。
我希望最终能得到这样的结果:
Id User_fkUsername User_Name User_Surname Followed_fkUserName Followed_Name Followed_Surname 1 pbean Paul Bean mWhite Mary White
D) 我正在使用的代码:
以下是我用于加入的代码:
CREATE VIEW [dbo].[vwFollowingUsers] AS SELECT a.Id, b.Name User_Name, c.Surname User_Surname, d.Name Followed_Name, e.Surname Followed_Surname FROM Following a LEFT JOIN UserProfile b ON a.fkUserName = b.fkUserName LEFT JOIN UserProfile c ON a.fkUserName = c.fkUserName LEFT JOIN UserProfile d ON a.follow_fkUserName = d.fkUserName LEFT JOIN UserProfile e ON a.follow_fkUserName = e.fkUserName
E)这就是我得到的:
vwFollowingUsers
Id User_Name Followed_Name 1 Paul Mary
我正在关注这个question
F) 更新代码
在我在这里发布问题后,我更新了我的代码,如下所示:
CREATE VIEW [dbo].[vwFollowingUsers] AS SELECT A.Id, B.fkUserName AS User_fkUserName, B.Name AS User_Name, B.Surname AS User_Surname, C.fkUserName AS Followed_fkUsername, C.Name AS Followed_Name, C.Surname AS Followed_Surname FROM Following A INNER JOIN UserProfile B ON A.fkUserName = B.fkUserName INNER JOIN UserProfile C ON A.follow_fkUserName = C.fkUserName;
G) 实际数据:
这是实际数据(根据要求)
正在关注
Id fkUsername follow_fkUserName 2 [email protected] [email protected]
用户个人资料
Id UserPhoto Description fkUserName Name Surname 1 ../Files/nich.jpg test [email protected] Nich White 2 ../Files/nich2.jpg null [email protected] Nich2 White2 3 ../Files/steph.jpg null [email protected] Stephania Borg
我正在使用 Visual Studio,我正在尝试创建一个 View ,该 View 将为我提供问题 G 部分中提到的结果。
最佳答案
您只需加入 UserProfile 2 次 1 即可为用户获取数据,另一次为关注者获取数据。
试试这个:
CREATE VIEW [dbo].[vwFollowingUsers]
AS SELECT A.id,
B.fkUserName AS User_fkUserName,
B.Name AS User_Name,
B.Surname AS User_Surname,
C.fkUserName AS Followed_fkUserName,
C.Name AS Followed_Name,
C.Surname AS Followed_Surname,
FROM Following A
LEFT JOIN UserProfile B ON A.fkUserName = B.fkUserName
LEFT JOIN UserProfile C ON A.follow_fkUserName = C.fkUserName;
关于sql - 如何多次使用特定列连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34450576/