SQL QUERY 选择特定老板手下的员工

标签 sql sql-server tsql stored-procedures

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

员工ID 老板ID

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

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

最佳答案

试试这个查询

你必须使用 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;

SQL FIDDLE

| BOSSID | EMPID | LEVEL |
--------------------------
|      1 |     2 |     0 |
|      2 |     4 |     1 |
|      4 |     5 |     2 |
|      4 |     6 |     2 |

关于SQL QUERY 选择特定老板手下的员工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16291824/

相关文章:

sql - 我可以在外键列中添加非原子值吗?

mysql - 计算行值的总数

sql-server - SQL 查询 SELECT FROM [来自另一个表的列的值]

sql - T-SQL 中的旧式 JOIN 语法是什么意思?

sql - 当我在 SSMS v.17.1 中使用 "DROP TABLE IF EXISTS"时出现错误

sql - 关于 SQL Server HierarchyID 深度优先性能的问题

sql - 需要根据一个表中的记录从多个表中进行选择

c# - 一对一变成一对多 Entity Framework 生成数据库优先

sql-server - 如何使用 SSRS 中的一组特定数据进行行计数

sql - 不是在 SQL 语句中吗?