2013-10-12 49 views
0

我有一个像下面的表结构,选择列不同的列名符合条件

employees_info:

id | name | role | managerid | 
1 | john | BO  | 2   | 
2 | jack | Manager| 3   | 

现在我需要选择约翰的细节,我需要他的idnamerolemanagername(不是管理员ID)。根据上面的表,我需要为同一个表编写查询,因为管理器也在同一个表中。

我想用工会像下面的,

select * from employees_info e 
union (select emp_name as manager_name 
from employees_info 
where e.managerid = managerid); 

,但我得到了

unknown column e.managerid in where clause

我可以创建role为不同的表,我可以使用内连接来得到它的工作,但是,我只是想过尝试一次就像上面的方法,我无法让它工作。请帮助我解决这个问题,如果它的方式正确。或者你甚至可以给我一个更好的方法。

回答

1

SQLFiddle例如here

select E.id emp_id, E.name emap_name, E.role emp_role, M.name manager_name from employees_info E inner join employees_info M on E.managerid = M.id where E.name='john'