a、类型表(类型ID、类型名称、父类型ID)t_protype(proclassid,TypeName,profclassid)
b、资源表(资源ID、类型ID、资源名称、适用科室)t_article(articleid,TypeID,articleName,re)
类型表有多层,类似于树状结构。 节点1--子节点1--孙节点1
--孙节点2
--孙节点3
子节点2--孙节点4
--孙节点5
...................................
如何通过类型ID,查找所有属于它的资源列表,其中包括所有属于它的子节点所包含的资源?各位大侠给点建议?
我是这么写的 (出错 ,各位大狭看看谢谢啦)
create function GetSunClass(@proclassid varchar(32))
returns @re table(proclassid varchar(32),level int)
as
begin
declare @l int
set @l=0
insert @re select @proclassid,@l
while @@rowcount>0
begin
set @l=@l+1
insert @re select a.proclassid,@l
from t_protype a,@re b
where a.profclassid=b.proclassid and b.level=@l-1
end
return
end
go
-------------------------
--调用函数实现查询
select a.*,b.*
from t_protype a,GetSunClass('8a71e0fa1a3e009e011a46e9d73f0011') a1 --查询 proclassid='8a71e0fa1a3e009e011a46e9d73f0011' 及其所有子类的资源
,t_article b
where a.proclassid=a1.proclassid
and a1.proclassid=b.proclassid
报错 在调用GetSunClass('8a71e0fa1a3e009e011a46e9d73f0011') 语法出错````
b、资源表(资源ID、类型ID、资源名称、适用科室)t_article(articleid,TypeID,articleName,re)
类型表有多层,类似于树状结构。 节点1--子节点1--孙节点1
--孙节点2
--孙节点3
子节点2--孙节点4
--孙节点5
...................................
如何通过类型ID,查找所有属于它的资源列表,其中包括所有属于它的子节点所包含的资源?各位大侠给点建议?
我是这么写的 (出错 ,各位大狭看看谢谢啦)
create function GetSunClass(@proclassid varchar(32))
returns @re table(proclassid varchar(32),level int)
as
begin
declare @l int
set @l=0
insert @re select @proclassid,@l
while @@rowcount>0
begin
set @l=@l+1
insert @re select a.proclassid,@l
from t_protype a,@re b
where a.profclassid=b.proclassid and b.level=@l-1
end
return
end
go
-------------------------
--调用函数实现查询
select a.*,b.*
from t_protype a,GetSunClass('8a71e0fa1a3e009e011a46e9d73f0011') a1 --查询 proclassid='8a71e0fa1a3e009e011a46e9d73f0011' 及其所有子类的资源
,t_article b
where a.proclassid=a1.proclassid
and a1.proclassid=b.proclassid
报错 在调用GetSunClass('8a71e0fa1a3e009e011a46e9d73f0011') 语法出错````
解决方案 »
- oracle怎么去掉空格,空格是\t,我是把数据读取到DataTable中,发现是\t
- 这样的sql如何写?
- ORacle语句性能优化帮助。
- ORACLE数据库触发器问题
- 大侠快来看看啊,调试这oracle 9i的jsp论坛时怎么总报这样的错误啊?(解决问题后送100分)
- OracleOraHomeClientCache这个服务是做什么用的?
- 关于oracle数据库讨厌的自动排序问题!!很难发觉的!
- manager console无法搜索到数据库节点,不能进行数据库备份怎么办??
- 请大家指教oralce同义词的访问的问题~~~~~~~~~
- 请教有些汉字输入到oracle8.1.7中变成了中文问号,如何处理?
- 大姐求助:select to_char(0.5) from dual 结果是.5 ,如何得到0.5,前面有个零?
- 快崩溃了,oraclemyoracleTNSListener服务启动后又停止了,请教大家到底是什么原因啊?
connect by 可以查树形结构的
from t_protype a,t_article b
where a.proclassid=b.typeid
start with a.proclassid='8a71e0fa1a3e009e011a46e9d73f0011'
connect by prior a.proclassid=a.profclassid
connect by 用法
假设表a的结构
id upid name
021 上海
6503 021 虹口区
5666 021 徐汇区
01 北京
6666 01 朝阳区
5555 01 崇武区
想查出上海及下属所有区的纪录
select a.*
from a
start with id='021'
connect by prior id=upid