2011-02-02 61 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