2010-07-25 80 views
1

我已經花了一些時間在這裏和mysql網站上研究這個問題,但是我對兩件事情有些困惑:要使用哪種連接以及如何或者如果)使用別名。將表a中的多列添加到表b上

查詢:

SELECT forum_threads.id, forum_threads.forum_id, forum_threads.sticky, 
forum_threads.vis_rank, forum_threads.locked, forum_threads.lock_rank, 
forum_threads.author_id, forum_threads.thread_title, forum_threads.post_time, 
forum_threads.views, forum_threads.replies, users.username AS author_username 
FROM forum_threads LEFT JOIN users ON forum_threads.author_id = users.id 
WHERE forum_threads.forum_id=XXX 

現在查詢發現目前從給定的論壇,所有線程和連接線程作者ID的用戶名錶。我也有lastpostid,我也想包含在查詢中,並再次加入users表,這樣我就可以獲得最後一個海報的用戶名。

我嘗試添加:

LEFT JOIN users ON threads.lastpostid = users.username 

但只是導致一個別名誤差users不是唯一的。

我也嘗試在主要查詢和第二次連接上使用兩個別名,但它一直給我缺少現場錯誤。

請問有人能給我一個正確的方向嗎?

回答

2

是的,你每次都需要一個不同的別名。每次在查詢中引用表時,都應該使用適當的別名。

SELECT 
    forum_threads.id, 
    -- etc..., 
    forum_threads.replies, 
    u1.username AS author_username 
    u2.username AS last_post_username 
FROM forum_threads 
LEFT JOIN users u1 ON forum_threads.author_id = u1.id 
LEFT JOIN users u2 ON threads.lastpostid = u2.username 
WHERE forum_threads.forum_id=XXX 
+0

謝謝!我是在正確的路線,我已經改變了forum_threads.author等於別名,但不是早期提及,所以它不工作。非常感謝! :) – TooManyCooks 2010-07-25 22:40:12

相關問題