2011-02-02 3 views
1

Я создаю список php todo и имею таблицу «admin_todo» в БД MySQL, и каждый объект todo имеет столбец «created_by» и «complete_by», который содержит идентификатор пользователя в в отдельной таблице «admin_users».Присоединиться к двум столбцам с одной таблицей MySQL

Мне нужен запрос, который позволит мне связать столбцы «created_by» и «finished_by» с столбцом «username» в таблице «admin_users», чтобы я мог повторить имя пользователя, создавшего todo и кто закончил 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 completers, но ТАКЖЕ под колонкой «создатель».

ответ

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

** работал отлично ** Я не знал, что можно выбрать таблицу AS «something_else», я думал, что только для столбцов. Благодаря! –

+0

Да, жизнь намного проще. – Darren

Смежные вопросы