SQL实例代码:取栏目树,过滤用户权限和无效栏目

文由网友whl供稿,特此感谢!
/**
  * Desc: 取栏目树 ,过滤用户权限和无效栏目
  * Author: WHL
  * Date: 2009-05-31 15:17
  */

 
/** 1. 取某用户有权限(np_cms_column_security表有记录且t.action_1 = ‘1′)的栏目的树 **/

01.createorreplaceviewV_NP_CTREE_BSas
02.selectB.*from(
03.selectA.*, lag(A.column_id) over(partitionbyA.column_idorderby0 ) RK
04.  from(select/*+choose */
05.         t.*
06.          fromnp_cms_column t
07.         wheret.is_active ='1'
08.        connectbypriort.column_id = t.parent_id
09.         startwitht.column_idin(selectt.column_id
10.                                      fromnp_cms_column_security t
11.                                     wheret.subject_id ='mazj'
12.                                          /*这里添加角色过滤*/
13.                                       andt.action_1 ='1'))A) B
14. wherenotexists
15. (select0
16.          from(selectdistinctd.column_id
17.                  fromnp_cms_column d
18.                connectbypriord.column_id = d.parent_id
19.                 startwithd.column_idin
20.                    (selectt.column_id
21.                       fromnp_cms_column_security t
22.                      wheret.subject_id ='mazj'
23.                           /* 这里添加角色过滤*/
24.                        andt.action_1 ='0'
25.                           /* 排除有权限树下的非授权ID,既 Action_1=0的*/
26.                        andexists
27.                      (select0
28.                               from(selectdistinctd.column_id
29.                                       fromnp_cms_column d
30.                                     connectbypriord.column_id =
31.                                                 d.parent_id
32.                                      startwithd.column_idin
33.                                                 (selectt.column_id
34.                                                    fromnp_cms_column_security t
35.                                                   wheret.subject_id =
36.                                                         'mazj'
37.                                                        /*这里添加角色过滤*/
38.                                                     andt.action_1 ='1')) C1
39.                              whereC1.column_id = t.column_id))
40.                        andd.is_active ='1') C
41.         whereC.column_id = B.column_idandB.RKisnull)andB.RKisnull
42.unionall
43.selectc.*, 0 RKfromnp_cms_column cwherec.parent_id = 0;

————————————————————————
/** 2.得到栏目的虚拟父亲ID(考虑到把断层的节点接起来)**/

01.createorreplaceviewV_NP_CTREE_PAas
02.selectB.*,
03.       (caseB.column_id
04.         when1then0elsenvl(B.father, 1)end) VFA
05.  from(selectv.*,
06.               (selectvv.column_id
07.                  fromV_NP_CTREE_BS vv
08.                 wherevv.column_id = v.parent_id) FATHER
09.          fromV_NP_CTREE_BS v) B;

————————————————————————
/** 3. 取出门户需要的栏目树 **/

1.--create or replace view V_NP_CTREE_RS as
2.select
3. D.*, LPAD(' ', 2 *level- 1) SYS_CONNECT_BY_PATH(D.COLUMN_NAME,'/') "Path"
4.  from(selectc.*
5.          fromV_NP_CTREE_PA c
6.         orderbyc.VFA, c.disorderdesc, c.column_iddesc) D
7.connectbypriorD.column_id = D.VFA
8. startwithD.column_id = 1;

时间: 2024-10-30 14:28:15

SQL实例代码:取栏目树,过滤用户权限和无效栏目的相关文章

实例代码:ASP实现过滤脏话的程序

程序 <!--#include file="../conn/dbconn1.asp"--><!--#include file="../inc/safe.asp"--><%content=Replace_Text(request.Form("content"))content=replace(content,"<","[")content=replace(content,&

T-Sql(七)用户权限操作(grant)

原文:T-Sql(七)用户权限操作(grant) 一般数据库的权限操作我们很少用,除非一些大型的项目,需要给数据库配置不同的用户及权限,防患于未然,今天我们就来了解下t-sql中配置用户权限操作. 先看示例代码: 1 --创建登录名 2 create login text1 3 with password='password1', 4 check_policy =off; 5 6 --修改登录名 7 alter login text1 8 with name = test1 9 go 10 al

asp用户登录模块实例代码

 asp用户登录模块实例代码: 用户登录验证脚本,Chkpwd.asp 以下为引用的内容: <%  '=======用户登录验证脚本=======  '如果尚未定义Passed对象,则将其定义为false,表示没有通过验证  If IsEmpty(Session("Passed")) Then  Session("Passed")=false  End If  'Session("Passed")=False,表示尚未通过验证,则开始读取从

JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)_java

下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JS

java哈夫曼树实例代码_java

本文实例为大家分享了哈夫曼树java代码,供大家参考,具体内容如下 package boom; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Queue; class Node<T> implements Comparable<Node<T>>{ private T

Java Web用户登录实例代码_java

实现功能: 1.用户登陆.注销 2.利用session记录用户登陆信息 3.在JSP中展示已登陆用户信息 实现原理: 登陆后通过判断用户名和密码是否和存储的一致,如果一致,就把用户信息放到session中储存:如果不一致就提示信息,并且返回登陆页面. 显示信息页面上固定从session中找用户登陆信息,找到就显示用户信息,没找到就显示登陆框. 注销很简单,就是清空session信息. 主要文件: 1.LoginAction:struts2的Action类,用于处理JAVA端的主要登陆和登出逻辑.

php入门用户登陆实例代码与教程

第一步 /* 先创建数据表 直接复制到你的phpmyadmin 直接运行就OK了.1 CREATE TABLE IF NOT EXISTS `useradmin` (   `id` int(4) NOT NULL auto_increment,   `username` varchar(20) default NULL,   `userpass` varchar(40) default NULL,   `logins` int(4) NOT NULL default '0' COMMENT '登

php限制用户60秒后发布评论实例代码

<? // php教程限制用户60秒后发布评论实例代码 /* create table `test`.`abc` ( `id` int( 4 ) not null auto_increment , `times` int( 4 ) not null default '0', `ip` varchar( 200 ) null default null , primary key ( `id` ) ) engine = myisam */ if( $_post ) {  $conn = mysql教

mssql sql 字符串截取实例代码

mssql sql 字符串截取实例代码 关于字符串截取我们用substring函数 substring   (   expression   ,   start   ,   length   )   返回字符.binary.text   或   image   表达式的一部分. 参数 expression 是字符串.二进制字符串.text.image.列或包含列的表达式.不要使用包含聚合函数的表达式. start 是一个整数,指定子串的开始位置. length 是一个整数,指定子串的长度(要返回