尝试在SQL中INNER JOIN两次到一个表

时间:2014-07-29 16:45:00

标签: sql

我有两个表,Flow和Users。 Flow有一个列列表:Username1,Username2,Username3等,以及我提取的其他一些数据(DocumentNumber和Location)。

用户拥有Username,FirstName和LastName的列。

我希望能够通过单个查询获取Flow中所有用户名的FirstName和LastName,以及保留DocumentNumber和Location。这可能吗?

感谢您的时间。

3 个答案:

答案 0 :(得分:1)

是的,你可以多次加入同一个表,只需给每个JOIN一个不同的别名:

...
FROM Flow f
LEFT JOIN Users u1 ON f.Username1=u1.Username
LEFT JOIN Users u2 ON f.Username2=u2.Username
LEFT JOIN Users u3 ON f.Username2=u3.Username
...

在您的选择列表中,请参阅u1.FirstName以获取与Username1关联的名字等。

答案 1 :(得分:0)

是的,只需多次加入users表:

SELECT 
  f.username,
  u1.firstname,
  u1.lastname,
  u2.firstname,
  u2.lastname,
  u3.firstname,
  u4.lastname,
  f.documentnumber,
  f.location
FROM flow f
INNER JOIN users u1 ON f.username1 = u1.username
INNER JOIN users u2 ON f.username2 = u2.username
INNER JOIN users u3 ON f.username3 = u3.username

答案 2 :(得分:0)

SELECT 
USR.USERNAME AS USERNAME1,
USR1.USERNAME AS USERNAME1,
USR2.USERNAME AS USERNAME1,
FL.DOCUMENTNUMBER,
FL.LOCATION
 FROM
FLOW FL 
INNER JOIN USERS USR ON USR.USERID=FL.USERID
INNER JOIN USERS USR1 ON USR1.USERID=FL.USERID1
INNER JOIN USERS USR2 ON USR2.USERID=FL.USERID2