从当前节点开始:
|
1
2
3
4
select sys_connect_by_path (title,
‘/‘
)
from tb_menu
start with id =
50
connect by prior parent = id;
在这里我又不得不放个怨言了。oracle只提供了一个sys_connect_by_path函数,却忘了字符串的毗连的次序。在上面的例子中,第一个sql是从根节点开始遍历,而第二个sql是直接找到当前节点,从服从上来说已经是千差万别,更要害的是第一个sql只能选择一个节点,而第二个sql却是遍历出了一颗树来。再次ps一下。
sys_connect_by_path函数就是从start with开始的处所开始遍历,并记下其遍历到的节点,start with开始的处所被视为根节点,将遍历到的路径按照函数中的脱离符,构成一个新的字符串,这个成果照旧很强盛的。
11)、列出当前节点的根节点。
在前面说过,根节点就是start with开始的处所。
1
2
3
4
select connect_by_root title,tb_menu.*
from tb_menu
start with id =
50
connect by prior parent = id;
connect_by_root函数用来列的前面,记录的是当前节点的根节点的内容。
12)、列出当前节点是否为叶子。
这个较量常见,尤其在动态目次中,在查出的内容是否尚有下级节点时,这个函数是很合用的。
1
2
3
4
select connect_by_isleaf,tb_menu.*
from tb_menu
start with parent is
null
connect by parent = prior id;
connect_by_isleaf函数用来判定当前节点是否包括下级节点,假如包括的话,声名不是叶子节点,这里返回0;反之,假如不包括下级节点,这里返回1。
至此,oracle树型查询根基上讲完了,以上的例子中的数据是行使到做过的项目中的数据,由于内里的内容也许欠好领略,以是就所有效一些新的例子来举办叙述。以上全部sql都在本机上测试通过,也都能实现响应的成果,可是并不能担保是办理这类题目的最优方案(如第8条明明写成存储进程会更好).
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!