当前位置:首页 » 编程语言 » sql的层级关系
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql的层级关系

发布时间: 2022-03-06 20:47:31

sql Server中如何存储具有层次关系的表

表结构应该是
ID
姓名
上代ID
代数

看你数据库像是SQL2000,若是想简单可以用表值函数来做这个查询,会更简单
,若是SQL2005,就能简单的使用CTE语句实现

② 【紧急】求SQL语句:已知parentID层级关系,求生成层级编码的语句

你是想根据父级ParenID 查询它的下级吗? 是只是它的第一层下级还是还包括下级的下级呢?
如果只要第一层的下级的话 where code like '01010[1-9]' or code like '0101[1-9]%' 0101是你知道的父级ParenIDID 这样写是因为如果你的下级个数大于100个的情况 如何你下级在 100个以内 则只需要这样写 where code like '0101[0-9][0-9]' 如果你要所以下级则更简单了 直接就是 where code like '0101[0-9]%' 这里之所以不写成 '0101%'这样 是因为如过写成这样 父级本身这条数据也会被查询出来。这应该就是你的想要的吧。

③ 有层级的,怎么用sql查询返回结果

树形结构的查询。
你需要说明一下, 你的数据库是什么数据库。

Oracle 使用 START WITH CONNECT BY 语句实现树状查询

DB2 与 MySQL 使用 CTE 递归处理来实现。

④ SQL的层次结构

sql环境包括目录1至目录N,目录又包括信息模式和模式1至模式2,模式还包括11个模式对象。

⑤ 层级关系的sql语句该怎么写

oracle 的group by rollup应该可以的吧,样得到结果集
是有层级关系。

⑥ 如何通过SQL语句实现数据的层次汇总

这个就需要从最底成开始回圈计算了
create proc aa
as

declare @a int
set @a= distinct b from table
if (select len(b) from table where @a=b)=3
begin
select t1.b , t1.c from into #a from table t1,table t2 where substring(t1.b,1,2) =substring(t2.b,1,2) and len(t1.b)=3 and t1.b=t2.b

update set t1 set t1. c=sum( t2.c) from table t1, #a t2 where substring(t2.b,1,2) =t1.b
end

else
begin
select t1.b , t1.c from into #a from table t1,table t2 where substring(t1.b,1,1) =substring(t2.b,1,1) and len(t1.b)=3 and t1.b=t2.b

update set t1 set t1. c=sum( t2.c) from table t1, #a t2 where substring(t2.b,1,1) =t1.b
end

⑦ SQL树形层级查询

你好的!
oracle 的start with connect by
别的数据库用cte 递归都能达到你要的效果!
望采纳~

⑧ sql语句显示层级

declare @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
INSERT @t SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'

;with cte as
(
select ID,name,level=0 from @t where PID is null
union all
select p.id,p.name ,level=level+1 from @t p join cte c on p.PID = c.ID
)
SELECT SPACE(Level*2)+''+Name
FROM cte
ORDER BY id
/*
山东省
烟台市
青岛市
招远市
四会市
清远市
小分市

(7 行受影响)*/

⑨ SQL要怎么写才能把 按员工查出他所在部门所有层级关系 。


WITHB1AS(
SELECT部门名称,部门名称一级部门,''二级部门,''三级部门,''四级部门,''五级部门FROM部门表WHERE层级=0),
B2AS(
SELECTB.部门名称,B1.一级部门,B.部门名称二级部门,''三级部门,''四级部门,''五级部门FROMB1JOIN部门表BONB.上级部门ID=B1.部门名称WHEREB.层级=1),
B3AS(
SELECTB.部门名称,B2.一级部门,B2.二级部门,B.部门名称三级部门,''四级部门,''五级部门FROMB2JOIN部门表BONB.上级部门ID=B2.部门名称WHEREB.层级=2),
B4AS(
SELECTB.部门名称,B3.一级部门,B3.二级部门,B3.三级部门,B.部门名称四级部门,''五级部门FROMB3JOIN部门表BONB.上级部门ID=B3.部门名称WHEREB.层级=3),
B5AS(
SELECTB.部门名称,B4.一级部门,B4.二级部门,B4.三级部门,B4.四级部门,B.部门名称五级部门FROMB4JOIN部门表BONB.上级部门ID=B4.部门名称WHEREB.层级=4),
BAS(
SELECT*FROMB1
UNIONALL
SELECT*FROMB2
UNIONALL
SELECT*FROMB3
UNIONALL
SELECT*FROMB4
UNIONALL
SELECT*FROMB5)
SELECTID,姓名,一级部门,二级部门,三级部门,四级部门,五级部门FROMBJOIN员工表YONY.部门=B.部门名称

⑩ 急求:SQL层级汇总的语句

CREATE TABLE table1 (
id INT,
name VARCHAR(10),
f_id INT
);
GO

INSERT INTO table1
SELECT 1 , 'a ', 0 UNION ALL
SELECT 2 , 'b ', 0 UNION ALL
SELECT 3 , 'a.1 ', 1 UNION ALL
SELECT 4 , 'a.2 ', 1 UNION ALL
SELECT 5 , 'a.1.1 ', 3 UNION ALL
SELECT 6 , 'a.1.2 ', 3 UNION ALL
SELECT 7 , 'a.2.1 ', 4 UNION ALL
SELECT 8 , 'a.2.2 ', 4 UNION ALL
SELECT 9 , 'a.1.1.1', 5 UNION ALL
SELECT 10, 'a.1.1.2', 5 UNION ALL
SELECT 11, 'a.1.2.1', 6 UNION ALL
SELECT 12, 'a.1.2.2', 6 UNION ALL
SELECT 13, 'a.2.1.1', 7 UNION ALL
SELECT 14, 'a.2.1.2', 7 UNION ALL
SELECT 15, 'a.2.2.1', 8 UNION ALL
SELECT 16, 'a.2.2.2', 8;
GO

CREATE TABLE table2 (
id INT,
t_id INT,
price DECIMAL(5,2)
);
GO

INSERT INTO table2
SELECT 1, 9 , 10.00 UNION ALL
SELECT 2, 10, 5.00 UNION ALL
SELECT 3, 11, 2.00 UNION ALL
SELECT 4, 12, 3.00 UNION ALL
SELECT 5, 13, 4.00 UNION ALL
SELECT 6, 14, 6.50 UNION ALL
SELECT 7, 15, 3.20 UNION ALL
SELECT 8, 16, 4.00
GO

WITH baseQuery
AS (
SELECT
table1.id,
table1.name,
table1.f_id,
ISNULL(table2.price, 0.00) AS price
FROM
table1 LEFT JOIN table2 ON (table1.id = table2.t_id)
), treeCTE
AS (
SELECT
id, name, f_id, price
FROM
baseQuery
WHERE
NOT EXISTS (
SELECT 1
FROM table1
WHERE table1.f_id = baseQuery.id
)
UNION ALL
SELECT
baseQuery.id,
baseQuery.name,
baseQuery.f_id,
CAST(baseQuery.price + treeCTE.price as DECIMAL(5,2))
FROM
baseQuery JOIN treeCTE ON (baseQuery.id = treeCTE.f_id)
)
select
id,
name,
SUM(price) AS price
from
treeCTE
GROUP BY
id,
name
ORDER BY
id

id name price
----------- ---------- ---------------------------------------
1 a 37.70
2 b 0.00
3 a.1 20.00
4 a.2 17.70
5 a.1.1 15.00
6 a.1.2 5.00
7 a.2.1 10.50
8 a.2.2 7.20
9 a.1.1.1 10.00
10 a.1.1.2 5.00
11 a.1.2.1 2.00
12 a.1.2.2 3.00
13 a.2.1.1 4.00
14 a.2.1.2 6.50
15 a.2.2.1 3.20
16 a.2.2.2 4.00

(16 行受影响)