用一个表MySQL加入两列

时间:2011-02-02 18:39:45

标签: php mysql select join left-join

我正在创建一个php待办事项列表,并在MySQL数据库中有一个'admin_todo'表,每个待办事项都有一个'created_by'和'completed_by'列,其中包含一个单独的表'admin_users'中用户的id 。

我需要一个查询,允许我将'created_by'和'completed_by'列与'admin_users'表中的'username'列链接起来,以便我可以回显创建todo的用户的用户名谁完成了待办事项。看起来这样做很容易,但是找不到正确的查询。

我尝试过使用联盟:

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

但是,它会两次返回所有todo条目,这是第一次使用todo创建者的用户名在“creator”列下。第二次使用todo的用户名完成,但也在“创建者”列下。

1 个答案:

答案 0 :(得分: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