2012-07-16 2 views
2

ID를 가진 Primary Key 열과 사람을 참조하는 동일한 테이블에 대한 참조 인 supervisorID 열이있는 employee라는 테이블이 있습니다. supervisorID를 ID 대신 참조하는 사람 이름으로 표시하려고합니다.동일한 테이블의 ID 대신 Referenced Name 표시

employee 테이블에서 *를 선택하지만 SupervisorID를 같은 테이블의 개인 이름으로 참조하고 싶습니다. 같은

답변

6
여기
SELECT e.ID, e.name AS Employee, s.name AS Supervisor 
FROM employee e 
    INNER JOIN employee s 
    ON s.ID = e.supervisorID 
ORDER BY e.ID; 

이 테스트하는 방법에 대한 자세한 색상 인 ID를 기반으로 :

mysql> CREATE TABLE employee (ID INT NOT NULL AUTO_INCREMENT, supervisorID INT NOT NULL DEFAULT '1', name VARCHAR(48) NOT NULL, PRIMARY KEY (ID)); 
Query OK, 0 rows affected (0.01 sec) 


mysql> INSERT INTO employee VALUES (1, 1, "The Boss"), (2,1, "Some Manager"), (3,2, "Some Worker"), (4,2, "Another Worker"); 
Query OK, 4 rows affected (0.00 sec) 
Records: 4 Duplicates: 0 Warnings: 0 


mysql> SELECT e.ID, e.name AS Employee, s.name AS Supervisor 
FROM employee e INNER JOIN employee s 
ON s.ID = e.supervisorID ORDER BY e.ID; 
+----+----------------+--------------+ 
| ID | Employee  | Supervisor | 
+----+----------------+--------------+ 
| 1 | The Boss  | The Boss  | 
| 2 | Some Manager | The Boss  | 
| 3 | Some Worker | Some Manager | 
| 4 | Another Worker | Some Manager | 
+----+----------------+--------------+ 
4 rows in set (0.01 sec) 

mysql> 
0

뭔가 :

SELECT e.name as 'employee name', supervisors.name as 'supervisor name' 
FROM employee e 
INNER JOIN employee supervisors ON e.ID = supervisors.supervisorID 
0

가 수행합니다 자체 조인

select e.*, s.name 
from 
    employee e 
    inner join employee s 
    on e.supervisorid = s.id 
관련 문제