2011-07-20 36 views
7

我有一表「用戶」與是同一個表的「內容」有點像這兩個外鍵幾行:最佳的方式加入多個外鍵同桌

user.id 
user.bio 
user.signature 

content.id 
content.text 

我知道這是不是從規範化的角度來做這件事的正確方法,但「內容」表來自一個單獨的數據庫,我不能修改。我不想複製數據。

我有一個問題找到一個很好的方法來加入他們。我所能做到的只是這一點,但這似乎很浪費。

SELECT bio.bio, text.text 
FROM(
SELECT content.text as bio 
FROM content, user 
WHERE user.bio = content.id 
AND user.id = 4) AS bio, 

SELECT content.text as content 
FROM content, user 
WHERE user.signature = content.id 
AND user.id = 4) AS content 

回答

10

您可以加入一個表多次,如果你給每個實例提供不同的別名:

SELECT bio.text, sig.text 
FROM user u 
JOIN content bio ON u.bio  = bio.id 
JOIN content sig ON u.signature = sig.id 
WHERE u.id = 4 
+0

哦!尼斯。謝謝! –