当前位置:首页 » 编程语言 » sql查询树形

sql查询树形

发布时间: 2022-10-22 22:30:23

① 如何用sql语句实现树形的数据库表查询

如果树的层数固定就可以用语句查询,但效率比较低。例如你说的三层:
select id,v2.name+name from t1 inner join
(select id,v1.name+name as name from t1 inner join
(select id,name from t1 where parentid = 0) v1 on t1.parentid = v1.id) v2 on t1.parentid = v2.id

② mysql 查询树形接口sql

mysql啊,这个还真不知道可不可以。不过oracle可以,递归查询上上级,或者查询到下下级都可以。代码参考:
查询出员工号为7788的所有上级。
select * from scott.emp start with empno=7788 connect by prior mgr= empno;

mysql里面如果sql不能实现,那就用程序里面的list啊,查询一个添加一个,循环(while)直到它的上级id为空为止。

事实上更建议用程序的方法,程序写代码更灵活,而sql不必写的太复杂。

③ sql怎么实现树查询

表格式如下:

cid pid cname
1 0 董事长
2 1 CEO
3 2 销售经理
4 2 IT经理
5 2 运营经理
6 3 销售主管
7 4 IT主管
8 5 运营主管
9 6 业务员
10 7 程序员
11 8 运营员

create function get_detail(
@id int
)returns @re table(id int,level int)
as
begin
declare @l int
set @l=0
insert @re select @id,@l
while @@rowcount>0
begin
set @l=@l+1
insert @re select a.cid,@l
from table_2 a,@re b
where a.pid=b.id and b.level=@l-1
end
return
end
go

--调用(查询所有的子)
select a.*,level=b.level from table_2 a,get_detail(2)b where a.cid=b.id

④ SQL树形层级查询

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

⑤ sql树形查询分级

必须设置好表的parentID,ID第一级设置为0
witht1as(
selecttreelevel=1,parentID,ID,cast(1asvarchar(20))ROWNUMfrom表whereID=0
unionall
selecttreelevel=treelevel+1,t2.parentID,t2.ID,cast(t1.ROWNUM+'.'+cast(row_number()over(orderbyt2.itemid)asvarchar(10))asvarchar(20))ROWNUMfrom表t2joint1ont2.parentID=t1.id

)

select*fromt1orderbyROWNUM

⑥ 如何用SQL解决树查询问题,急!!!

oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:

select * from tablename start with cond1
connect by prior cond2
where cond3;

简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
id,parentid。那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。

用上述语法的查询可以取得这棵树的所有记录。

其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。

COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。

COND3是过滤条件,用于对返回的所有记录进行过滤。

⑦ 怎么一句sql查询出树状结果

SQL code
就是类似这个撒
--测试数据
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','小分市'
--深度排序显示处理
--生成每个节点的编码累计(相同当单编号法的编码)
DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
DECLARE @Level int
SET @Level=0
INSERT @t_Level SELECT ID,@Level,ID
FROM @t
WHERE PID IS NULL
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID
FROM @t a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
--显示结果
SELECT SPACE(b.Level*2)+'|--'+a.Name
FROM @t a,@t_Level b
WHERE a.ID=b.ID
ORDER BY b.Sort
/*--结果
|--山东省
|--烟台市
|--招远市
|--青岛市
|--四会市
|--清远市
|--小分市
--*/

⑧ 如何用SQL语句查询树形菜单包含的所有数据

Sql Server 2000因为你这里说了只有三级分类,所以我就不写Sql函数了,得到华北下面所有子类别的ClassID(不包括华北的ClassID)select ClassID from Newclass where classParentID in (select ClassID from Newclass where classParentID=51)

⑨ sql怎么实现树查询

CREATE TABLE T (CID VARCHAR(5),PID VARCHAR(5),CNAME VARCHAR(20))
GO
INSERT INTO T VALUES ('1','0','董事长')
INSERT INTO T VALUES ('2','1','CEO')
INSERT INTO T VALUES ('3','2','销售经理')
INSERT INTO T VALUES ('4','2','IT经理')
INSERT INTO T VALUES ('5','2','运营经理')
INSERT INTO T VALUES ('6','3','销售主管')
INSERT INTO T VALUES ('7','4','IT主管')
INSERT INTO T VALUES ('8','5','运营主管 ')
INSERT INTO T VALUES ('9','6','业务员')
INSERT INTO T VALUES ('10','7','程序员')
INSERT INTO T VALUES ('11','8','运营员')
GO

CREATE FUNCTION F(@CID INT)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @R VARCHAR(50)
SELECT @R=PID+'.'+CID FROM T WHERE CID=@CID
WHILE EXISTS(SELECT 1 FROM T WHERE CID=(SELECT PID FROM T WHERE CID=@CID))
BEGIN
SELECT @CID=PID FROM T WHERE CID=@CID
SELECT @R=PID+'.'+@R FROM T WHERE CID=@CID
END
RETURN @R
END
GO

SELECT * FROM T WHERE DBO.F(CID) LIKE '%.2.%'
GO
DROP TABLE T
DROP FUNCTION F

提供个大概的思路,具体你还可以优化,把 LIKE里面的2换成其他CID既可查询对应的下属信息

⑩ sql 查询树形数据。

如果树的层数固定就可以用语句查询,但效率比较低。例如你说的三层:
select id,v2.name+name from t1 inner join
(select id,v1.name+name as name from t1 inner join
(select id,name from t1 where parentid = 0) v1 on t1.parentid = v1.id) v2 on t1.parentid = v2.id

热点内容
如何不使用信用卡支付密码 发布:2024-12-29 14:30:36 浏览:198
安卓手机如何到数据到新手机 发布:2024-12-29 14:29:58 浏览:961
linux卸载虚拟机 发布:2024-12-29 14:29:48 浏览:39
乐视手机配置为什么这么便宜 发布:2024-12-29 14:19:05 浏览:694
androidicon生成 发布:2024-12-29 14:11:47 浏览:936
解压表盘 发布:2024-12-29 14:09:41 浏览:188
java有教学 发布:2024-12-29 14:03:43 浏览:585
安卓云服务照片怎么恢复 发布:2024-12-29 13:48:24 浏览:684
b9存储卡能装游戏吗 发布:2024-12-29 13:32:06 浏览:590
装修进度源码 发布:2024-12-29 13:31:27 浏览:799