2016-08-22 65 views
0

我有两个表(UsersPairs)。 Pairs表包含3列,一个ID,然后是user1ID和user2ID。SQL内部加入两个外键

用户

ID  firstName  surname 
------------------------------ 
1043 john   doe 
2056 jane   doe 

ID  user1ID  user2ID 
------------------------------ 
1  1043   2056 

我再考虑使用select语句来获得对Pairs表的ID的用户细则:

SELECT users1.*, users2.* 
FROM Pairs 
JOIN Users users1 ON Pairs.user1ID = users1.IDNumber 
JOIN Users users2 ON Pairs.user2ID = users2.IDNumber 
WHERE Pairs.ID = 1 

它返回两个用户的正确详细信息,但它们都在一行上,我怎样才能使它返回每个用户的单独行,因为它们在Users表中?

回答

0
SELECT users1.*, users2.* 
FROM Pairs 
JOIN Users 
ON Pairs.user1ID = users.IDNumber 
OR Pairs.user2ID = users.IDNumber 
WHERE Pairs.ID = 1 

只需在ON条件中使用OR语句而不是2个连接。

0

IN也可以。

SELECT * 
FROM Pairs p 
     JOIN Users u ON u.ID IN (p.user1ID, p.User2ID) 
WHERE p.ID = 1