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

sql的树形结构

发布时间: 2022-07-27 04:54:12

A. 建立一个树形结构的sql表 3实现的功能

主要是要有ID,PID两个字段,下面是我用的一个表,仅供参考:
CREATE TABLE [dbo].[Sys_Menu](
[ID] [int] NOT NULL,
[Code] [varchar](50) NOT NULL,
[PID] [int] NOT NULL,
[Name] [nvarchar](50) NULL,
[Url] [varchar](100) NULL,
[STATE] [bit] NOT NULL,
[IsSelected] [bit] NULL
) ON [PRIMARY]

GO

B. sql server 2005数据库中怎样建立树形结构表

树形结构表关键就是要有上一级的关联字段:
parentid
ID
.......
这样自然而然的就成为了树形结构表了。

C. sql里树形结构分组排序

createtableT1(thisvarchar(10),parentvarchar(10))
insertintoT1(this,parent)
values('id1',null)
,('id2',null)
,('id3','id1')
,('id4','id2')
,('id5','id3')
,('id6','id3')
,('id7','id4')
,('id8','id7')

--sqlserver的cte功能
withtree(this,parent,root,depth)as(
selectthis,parent,thisasroot,
unionall
selecta.this,a.parent,b.root,b.depth+1asdepthfromT1a,treebwherea.parent=b.this
)
selectthis,parent,root,depth
fromtree
orderbyroot,depth,this

D. sql server怎么对树形结构表的节点进行拼接

DECLARE @temp nvarchar(MAX)='',@pid bigint=3;
WHILE @pid<>0 BEGIN IF @temp=''
SELECT @temp=TypeName,@pid=ParentId
FROM [dbo].[Test]
WHERE Id=@pid;
ELSE
SELECT @temp=(TypeName+'->'+@temp),@pid=ParentId
FROM [dbo].[Test]
WHERE Id=@pid;
END;
SELECT @temp AS TypeName;

E. 关于SQL查询树结构数据的语句

方法1:
是否可以有代表层次的字段,若有,直接根据层次字段查询;
方法2:
是否存在以下假设:
非父级的dept_uid的 不可能 在 parent_uid 中出现。
如果假设成立,在查出的所有dept_uid中去掉,所有在在 parent_uid 中出现id,
剩下的就是你要的了。

F. sql server树形结构表统计每一级树形下的所有子集数,

有如下数据表
create table tb(id varchar(3) , pid varchar(3) , name varchar(10));
insert into tb values('001' , null , '广东省');
insert into tb values('002' , '001' , '广州市');
insert into tb values('003' , '001' , '深圳市') ;
insert into tb values('004' , '002' , '天河区') ;
insert into tb values('005' , '003' , '罗湖区');
insert into tb values('006' , '003' , '福田区') ;
insert into tb values('007' , '003' , '宝安区') ;
insert into tb values('008' , '007' , '西乡镇') ;
insert into tb values('009' , '007' , '龙华镇');
insert into tb values('010' , '007' , '松岗镇');

假如我们要查询ID为003的数据的所有子节点我们可以使用CTE 递归查询完成...

with cte as
(
select a.id,a.name,a.pid from tb a where id='003'
union all
select k.id,k.name,k.pid from tb k inner join cte c on c.id = k.pid
)select * from cte

查询结果如下:
003 深圳市 001
005 罗湖区 003
006 福田区 003
007 宝安区 003
008 西乡镇 007
009 龙华镇 007
010 松岗镇 007

G. 求教oracle怎么用一个SQL查询多层树形结构

select * from 表 m start with m.id=1 connect by m.parent=prior m.id;

H. 怎样在 MySQL 表中存储树形结构数据

您好,很高兴为您解答。

一般比较普遍的就是四种方法:(具体见 SQL Anti-patterns这本书)
Adjacency List:每一条记录存parent_id
Path Enumerations:每一条记录存整个tree path经过的node枚举
Nested Sets:每一条记录存 nleft 和 nright
Closure Table:维护一个表,所有的tree path作为记录进行保存。

各种方法的常用操作代价见下图



如若满意,请点击右侧【采纳回答】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

~ O(∩_∩)O~

I. oracle sql语句 显示树形结构

设计的表结构不合理,怎么能用对象设计表呢。组多两个字段, people_id,parent_id
只关心他们的层级关系即可。
查询出来是
select t.people_id, t.parent_id from family t
start with t.people_id is null connect by nocycle prior t.people_id=t.parent_id。

真多多层级查询毫无压力。另外 对 函数的理解多参考下语法用途。nocycle 防止死循环。可以举一反三,自己试一下 start with 中 people_id 与 parent_id 互换位置,会有额外收获,多动手。祝你oracle 之旅愉快~

J. 求一条sql语句,树形结构

最后SQL语句返回的结果是什么?看一下以下语句行不行?

WITHAAS(SELECTpk_compID,Name,pk_fathercompPIDFROMcompany
UNIONALL
SELECTpk_dept,DeptName,pk_compFROMdept),
BAS
(SELECTCAST(NameASVARCHAR(200))Name,PID,IDFROMAWHEREPID=0
UNIONALL
SELECTCAST(B.Name+''+A.NameASVARCHAR(200)),A.PID,A.ID
FROMBJOINAONB.ID=A.PID)
SELECTNameFROMB