sql 父类下的子类查询的方法,包含父类的信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 父类下的子类查询的方法,包含父类的信息相关的知识,希望对你有一定的参考价值。

如:
1 桌子 0
2 椅子 0
3 凳子 0
4 大号 1
5 中号 1
6 小号 1
查找父类下的子类并且包含父类的信息 如要查找桌子的信息格式如下
1 桌子 0
4 大号 1
5 中号 1
6 小号 1
请问sql语句如何实现?

-查询各节点的父路径函数(从父到子)
create function f_pid1(@id varchar(3)) returns varchar(100)
as
begin
declare @re_str as varchar(100)
set @re_str = \'\'
select @re_str = name from tb where id = @id
while exists (select 1 from tb where id = @id and pid is not null)
begin
select @id = b.id , @re_str = b.name + \',\' + @re_str from tb a , tb b where a.id = @id and a.pid = b.id
end
return @re_str
end
go
--查询各节点的父路径函数(从子到父)
create function f_pid2(@id varchar(3)) returns varchar(100)
as
begin
declare @re_str as varchar(100)
set @re_str = \'\'
select @re_str = name from tb where id = @id
while exists (select 1 from tb where id = @id and pid is not null)
begin
select @id = b.id , @re_str = @re_str + \',\' + b.name from tb a , tb b where a.id = @id and a.pid = b.id
end
return @re_str
end
go

select * ,
dbo.f_pid1(id) [路径(从父到子)] ,
dbo.f_pid2(id) [路径(从子到父)]
from tb order by id

drop function f_pid1 , f_pid2
drop table tb

/*
id pid name 路径(从父到子) 路径(从子到父)
参考技术A declare @t table(编号 varchar(20),名称 varchar(10),数量 int)
insert into @t select '01' ,'桌子' ,0
union select '0101','大号',1
union select '0102','中号',1
union select '0103','小号',1
union select '02','椅子',0
union select '03','凳子',0

select * from @t
--仅查询桌子及其子类的情况
select 编号,名称 , 数量
from @t
where 编号 like '01%'追问

如果数据很多的话,这样写岂不是很麻烦。有没简单的sql语句

追答

数据有多少?500万条也能瞬间完成。

本回答被提问者和网友采纳
参考技术B 如果在sql sever 2005或以上版本可以这样
with a as(
select id,nodename,pid from 表 where id='05009'
union all
select x.id,a.nodename,a.pid from 表 x,a
where x.pid=a.id)
select * from a

在JAVA中,子类继承父类,父类可以调用子类继承父类的方法,父类为啥不能调用子类自己定义的方法呢

那个是多态,把子类当作父类来用 InputStream is = new FileInputStream(file);,于是父类的一个引用被赋给了一个子类的实例。这样看起来是父类调用了一个继承自父类的方法。
java多态存在的三个必要条件:
1.需要有继承关系的存在
2.需要有方法的重写
3.需要有父类的引用指向子类对象
希望对你有帮助。
参考技术A JAVA里面的继承,就像是儿子继承父亲,难道还有父亲继承儿子不成。。这样理解就好了,何必钻牛角尖

以上是关于sql 父类下的子类查询的方法,包含父类的信息的主要内容,如果未能解决你的问题,请参考以下文章

my sql 查找父类下面的所有子类

在java 中子类对象为啥不能比父类对象有更严格的访问权限?

继承一个类,然后返回获取子类中的所有方法并且不包含父类的

div子类能否设置成占父类的百分之多少

子类为啥要调用父类的构造函数

Python_子类调用父类的方法