Est-ce que quelque chose comme ça fonctionnerait pour vous :
With ManagerWorkers As
(
-- get managers with workers
Select Managers.WorkerUsername As ManagerUsername, Workers.WorkerUsername
From tblMyTable As Managers
Join tblMyTable As Workers
On Workers.ManagerUsername = Managers.WorkerUsername
)
Select *
From ManagerWorkers
Union All
-- get workers that have a manager in the above list
Select WorkerUsername, ManagerUsername
From tblMyTable
Where Exists( Select 1
From ManagerWorkers
Where ManagerWorkers.ManagerUsername = tblMyTable.ManagerUsername
)
MODIFIER :Étant donné la mise à jour de la question, qu'en est-il de la requête suivante :
Select D1.u_username, U1.Permission, U1.Grade, D1.f_username, U2.Permission, U2.Grade
from tblDynamicUserList As D1
Join tblDynamicUserList As D2
On D2.u_username = D1.f_username
And D2.f_username = D1.u_username
Join tblUsers As U1
On U1.u_username = D1.u_username
Join tblUsers As U2
On U2.u_username = D2.u_username