我正在创建一个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的用户名完成,但也在“创建者”列下。
答案 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