2 번째 테이블이 있습니다. 첫 번째 직원은 어느 위치에 있든 관계없이 두 번째 테이블에는 직원 번호와 관련된 직원 관계가 있습니다.동일한 테이블, 1 필드에서 2 필드 쿼리
내가 그렇게 할 수있는 방법1st field: name(employee),
2nd field: name(manager)
같은 쿼리를 작성하려는
?
2 번째 테이블이 있습니다. 첫 번째 직원은 어느 위치에 있든 관계없이 두 번째 테이블에는 직원 번호와 관련된 직원 관계가 있습니다.동일한 테이블, 1 필드에서 2 필드 쿼리
내가 그렇게 할 수있는 방법1st field: name(employee),
2nd field: name(manager)
같은 쿼리를 작성하려는
?
없음 중첩 된 쿼리 :
insert into Employees (Name) select 'The Chief';
insert into Employees (Name, ManagerId) select 'Grunt 1',
(select EmployeeId from Employees where Name = 'The Chief');
insert into Employees (Name, ManagerId) select 'Grunt 2',
(select EmployeeId from Employees where Name = 'The Chief');
insert into Employees (Name, ManagerId) select 'Secretary',
(select EmployeeId from Employees where Name = 'The Chief');
두 번째 그런트의 관리자의 이름을 찾으려면, 당신은 같은 쿼리 수 표준 결합을 사용하세요.
select e.*, m.*
from
employee e
left join employee_managers em
on e.id = em.emp_id
left join employee m
on m.id = em.man_id
각 행에는 모든 필드가 employee
(관련 관리자가 여러 명인 경우 직원 한 명당 여러 행) 및 해당 관리자의 모든 필드 (직원이 관리자가없는 경우 NULL
)가 포함됩니다.
당신이 할 수있는 하나 개의 테이블 : 같은 테이블에서 관리자의 항목에
Employee
--------
EmployeeId int
Name varchar(50)
ManagerId int
ManagerId
점. CEO는 관리자 ID가 null
입니다. 예 테이블 정의 : 몇 가지 예를 들어 데이터와
create table Employees (
EmployeeId int auto_increment primary key
, Name varchar(50)
, ManagerId int
, foreign key (ManagerId) references Employees(EmployeeId)
);
: 필요
select mgr.Name
from Employees mgr
inner join Employees grunt
on grunt.managerid = mgr.employeeid
where grunt.name = 'Grunt 2';
예, 내 솔루션 바로 위에, ems mysql 관리자가 우연히 나를 위해 않았다. :) – edib