Có thứ gì như thế này phù hợp với bạn không:
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
)
CHỈNH SỬA :Đưa ra bản cập nhật cho câu hỏi như thế nào về truy vấn sau:
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