我有这些表(用户和会议):
UserId | Name
1 | John
2 | Linda
3 | David
和
UserId_1 | UserId_2 | MeetingDate
1 | 2 | 15/01/2018
3 | 2 | 17/01/2018
1 | 3 | 19/01/2018
如何从2个表中进行选择,以便在每一行中获取与每个ID相关联的名称?我想得到这样的东西:
UserId_1 | UserId_2 | User_1_Name | User_2_Name | MeetingDate
1 | 2 | John | Linda | 15/01/2018
3 | 2 | David | Linda | 17/01/2018
1 | 3 | John | David | 19/01/2018
谢谢。
答案 0 :(得分:5)
你只需要两个内连接:
SELECT m.UserId_1
,m.UserId_2
,u1.NAME
,u2.NAME
,m.MeetingDate
FROM Meetings m
INNER JOIN Users u1 ON u1.UserId = m.UserId_1
INNER JOIN Users u2 ON u2.UserId = m.UserId_2
答案 1 :(得分:2)
您只需要对表格中的一个或两个引用进行别名,您需要连接两次...
SELECT
user1.UserId AS UserId_1,
user2.UserId AS UserId_2,
user1.Name AS User_1_Name,
user2.Name AS User_2_Name,
Meetings.MeetingDate
FROM
Meetings
INNER JOIN
Users AS user1
ON user1.UserId = Meetings.UserId_1
INNER JOIN
Users AS user2
ON user2.UserId = Meetings.UserId_2
别名意味着您可以毫无歧义地引用您所指的Users
实例。
答案 2 :(得分:1)
select Meetings.UserId_1,
Meetings.UserId_2,
isnull(a.Name,'--Unknown--') User_1_Name,
isnull(b.Name,'--Unknown--') User_2_Name,
MeetingDate
from Meetings left join Users a on Meetings.UserId_1 = a.UserID
left join Users b on Meetings.UserId_2 = b.UserID
答案 3 :(得分:1)
另一种方法是
SELECT m.UserId_1
,m.UserId_2
,(select name from Users where Users.id = m.UserId_1) as User_1_Name
,(select name from Users where Users.id = m.UserId_2) as User_2_Name
,m.MeetingDate
FROM Meetings m
此致
阿都