sql - 如何多次使用特定列连接两个表

标签 sql sql-server select join view

我有以下 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/

相关文章:

mysql - sql测试条件如果失败转移到下一个人

mysql - 同时将值插入到两个表中 - 一对一关系

sql - 如何在现有表中执行相当于 'Tsql select into' 的操作

javascript - 通过 JS 获取 Select 选项值并设置数组索引

mysql - 将 MySQL JSON 列数组读取为行

SQL Server 清除内存

sql-server - SQL 服务器错误 |快照隔离相关

c# - Entity Framework GroupBy到Sql生成

sockets - 如何使用Socket.select

mysql - 如何获取与另一个表中的多行相关的行?