SQL QUERY选择特定boss下的员工

Ray*_*ong 3 sql t-sql sql-server stored-procedures

一个具有挑战性的问题,我有如下表格

EmployeeID BossID

pic http://img16.imageshack.us/img16/7659/20130430113245.jpg

任何创建查询的想法,以便当某个员工进入时,它会查询他下面的所有员工以及谁是他的老板

Meh*_*zad 5

试试这个查询

你必须像Sohail所提到的那样使用CTE.

WITH DirectReports (bossId, EmpID, Level)
AS
(
-- Anchor member definition
    SELECT bossId, empId,
        0 AS Level
    FROM tbl
    WHERE empId = 2
    UNION ALL
-- Recursive member definition
    SELECT e.bossId, e.empId,
        Level + 1 AS Level
    FROM tbl e
    INNER JOIN DirectReports AS d
        ON e.bossId = d.empId
)
-- Statement that executes the CTE
SELECT *
FROM DirectReports;
Run Code Online (Sandbox Code Playgroud)

SQL FIDDLE

| BOSSID | EMPID | LEVEL |
--------------------------
|      1 |     2 |     0 |
|      2 |     4 |     1 |
|      4 |     5 |     2 |
|      4 |     6 |     2 |
Run Code Online (Sandbox Code Playgroud)