关于T-SQL层级关系的思路
2012-03-25 22:45
218 查看
在项目中遇到了一个层级关系,情况如下,要在用户信息表中找到汇报给大区销售经理的员工信息(含汇报给大区销售经理的员工的员工),
1 及:大区销售经理
2级:汇报给大区销售经理的直接汇报对象
3级:汇报给2级的直接对象;
为了以后方便查找此资料,现在我把大区销售经理的id 看成2,T-SQL语句如下:
View Code
调用方式:
1 及:大区销售经理
2级:汇报给大区销售经理的直接汇报对象
3级:汇报给2级的直接对象;
为了以后方便查找此资料,现在我把大区销售经理的id 看成2,T-SQL语句如下:
View Code
CREATE FUNCTION dbo.FnGetReports(@EmpolyeeID AS INT) RETURNS @Reports TABLE ( EmployeeID INT NOT NULL, ReportToID INT NULL ) AS BEGIN DECLARE @Employee INT; INSERT INTO @Reports SELECT EmployeeID,ReportsTo FROM Employees WHERE EmployeeID=@EmpolyeeID; SELECT @Employee=MIN(EmployeeID) FROM Employees WHERE ReportsTo=@EmpolyeeID; WHILE @Employee IS NOT NULL BEGIN INSERT INTO @Reports SELECT * FROM dbo.FnGetReports(@Employee); SELECT @Employee = MIN(EmployeeID) FROM Employees WHERE EmployeeID>@Employee AND ReportsTo=@EmpolyeeID END RETURN END GO
调用方式:
DECLARE @EmployeeID INT; SELECT @EmployeeID = 2; SELECT ee.EmployeeID,ee.LastName+' '+ ee.FirstName,tt.LastName+' '+TT.FirstName AS 'ReportTo' FROM Employees AS ee INNER JOIN DBO.FnGetReports(@EmployeeID) AS aa ON ee.EmployeeID = aa.EmployeeID INNER JOIN Employees tt ON tt.EmployeeID = aa.ReportToID
相关文章推荐
- 【DB2】国标行业分类存储,通过SQL查询出层级关系
- SQL Server over和CTE的妙用(子记录根据外键递归找出父记录,并实现层级关系码)
- 关于父进程和子进程的关系(UAC 绕过思路)
- 一道SQL题...(关于树型结构的在关系表中的存储及其应用处理)
- 教学思路SQL之预备课程学习 建库、建表、建约束、关系、部分T-sql语句
- 【新手向】关于iOS的UI中view的层级关系
- 教学思路SQL之预备课程学习 建库、建表、建约束、关系、部分T-sql语句
- 关于PL/SQL代码中的内嵌SQL与V$SQL的关系
- 教学思路SQL之入门习题《学生成绩》 四、多表连接关系查询
- SQL 中使用With As处理层级关系小记
- 教学思路SQL之入门习题《学生成绩》 四、多表连接关系查询
- 一次ORA-4030问题诊断及解决【解决思路不错,说明了对象的统计信息与优化器的优化操作(即选择执行一个SQL语句在该优化参数环境下最佳的执行计划)间的关系】
- 关于子窗体的层级关系
- 一道 SQL 题 ... (关于树型结构的在关系表中的存储及其应用处理)
- 教学思路SQL之入门习题《学生成绩》 四、多表连接关系查询
- 样式的层级关系,选择器优先级,样式冲突,以及抽离样式模块怎么写,说出思路,有无实践经验
- 一道 SQL 题 ... (关于树型结构的在关系表中的存储及其应用处理)
- 教学思路SQL之入门习题《学生成绩》 四、多表连接关系查询
- 教学思路SQL之预备课程学习 建库、建表、建约束、关系、部分T-sql语句
- 关于sql server 2008 r2 展开时报错:参数名:viewInfo ( Microsoft SqlServer Management SqlStudio Explorer )解决思路