2016-08-22 63 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