Vous pouvez le faire avec une table:
Employee
--------
EmployeeId int
Name varchar(50)
ManagerId int
ManagerId
des points à l'entrée du gestionnaire dans la même table. Le chef de la direction aura un ID de gestionnaire de null
. Une définition de la table exemple:
create table Employees (
EmployeeId int auto_increment primary key
, Name varchar(50)
, ManagerId int
, foreign key (ManagerId) references Employees(EmployeeId)
);
Avec quelques exemples de données:
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');
Pour trouver le nom du deuxième gestionnaire de Grunt, vous pouvez interroger comme:
select mgr.Name
from Employees mgr
inner join Employees grunt
on grunt.managerid = mgr.employeeid
where grunt.name = 'Grunt 2';
oui, ma solution était juste au-dessus, ems mysql manager l'a fait pour moi par hasard. :) – edib