2012-01-06 60 views
2

Im循環訪問論壇帖子列表,從兩個表中提取數據,postsmembersmySql加入 - 來自同一個表的多條記錄

我使用的是LEFT JOIN

SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.poster=m.id

這一切工作正常。但我也需要從成員表中取得不同的記錄,即p.lastposter。我將如何做到這一點?我無法在其中添加另一個JOIN,因爲我已經拉動了m.name,難道不會讓它混淆嗎?

回答

0

如果你想2個不同的rows你可以使用UNION

SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.poster=m.id 

UNION 

SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.lastposter=m.id 

如果你想在同一row更多信息從lastposter做到這一點:

SELECT m.name, p.title, lp.name AS lastposter 
FROM posts AS p 
LEFT JOIN members AS m ON p.poster=m.id 
LEFT JOIN members AS lp ON p.lastposter = lp.id 
+0

感謝,我已經做了第2個方法,但得到一個錯誤,當我在最後加一個限制。我想限制它從'posts'找到的記錄 – user1022585 2012-01-06 15:39:25

+0

你可能想要UNION ALL在這裏,不是嗎? – 2012-01-06 15:49:52

+0

@BillyONeal它取決於:) – 2012-01-06 16:50:27

0

我可以我可以添加另一個JOIN,因爲我已經拉了一個m.name,不會混淆它嗎?

SELECT m.name, p.title, lastpostMembers.name AS lastpostername FROM posts AS p 
LEFT JOIN members m ON p.poster=m.id 
LEFT JOIN members lastpostMembers ON p.lastposter=lastpostMembers.id 

我真的不明白爲什麼留給你雖然加盟這裏;好像你真的想要一個內部連接。

2

您可以添加其他加入了不同的別名:

SELECT m.name, p.title, lp.name AS lastposter 
FROM posts AS p 
LEFT JOIN members AS m ON p.poster=m.id 
LEFT JOIN members AS lp ON p.lastposter = lp.id 
相關問題