2011-02-02 108 views
1

我正在創建一個php待辦事項列表,並在MySQL數據庫中有一個'admin_todo'表,每個待辦事項有一個'created_by'和'completed_by'列,其中包含用戶的ID在一個單獨的表'admin_users'中。加入兩列與一個表MySQL

我需要一個查詢,它允許我將'created_by'和'completed_by'列與'admin_users'表中'用戶名'列鏈接起來,這樣我就可以回顯創建用戶的用戶名待辦事項和誰完成了待辦事項。這似乎是一件容易的事情,但我無法找到正確執行此操作的查詢。

我一直在使用一個聯合的嘗試:

SELECT admin_todo.*, admin_users.username AS creator 
FROM admin_todo 
LEFT JOIN admin_users ON admin_todo.created_by = admin_users.id 

UNION ALL 

SELECT admin_todo.*, admin_users.username AS completer 
FROM admin_todo 
LEFT JOIN admin_users ON admin_todo.completed_by = admin_users.id 

但很可惜,它返回所有的待辦事項條目兩次,第一次與待辦事項創作者的用戶名的「創造者」欄下。第二次使用待辦事項完成者的用戶名,但也在「創建者」列下。

回答

8

試試這個:

SELECT admin_todo.*, au.username AS creator, au2.username AS completer 
FROM admin_todo 
LEFT JOIN admin_users AS au 
    ON admin_todo.created_by = au.id 
LEFT JOIN admin_users AS au2 
    ON admin_todo.completed_by = au2.id 
+0

**非常完美**,我不知道,你可以選擇一個表作爲「something_else」,我認爲這是隻爲列。謝謝! – 2011-02-02 18:56:40