zoukankan      html  css  js  c++  java
  • 连表查询

    ########################## RBAC ################################
    DROP TABLE IF EXISTS php34_privilege;
    CREATE TABLE php34_privilege
    (
    	id smallint unsigned not null auto_increment,
    	pri_name varchar(30) not null comment '权限名称',
    	module_name varchar(10) not null comment '模块名称',
    	controller_name varchar(10) not null comment '控制器名称',
    	action_name varchar(10) not null comment '方法名称',
    	parent_id smallint unsigned not null default '0' comment '上级权限的ID,0:代表顶级权限',
    	primary key (id)
    )engine=MyISAM default charset=utf8 comment '权限表';
    
    DROP TABLE IF EXISTS php34_role_privilege;
    CREATE TABLE php34_role_privilege
    (
    	pri_id smallint unsigned not null comment '权限的ID',
    	role_id smallint unsigned not null comment '角色的id',
    	key pri_id(pri_id),
    	key role_id(role_id)
    )engine=MyISAM default charset=utf8 comment '角色权限表';
    
    DROP TABLE IF EXISTS php34_role;
    CREATE TABLE php34_role
    (
    	id smallint unsigned not null auto_increment,
    	role_name varchar(30) not null comment '角色名称',
    	primary key (id)
    )engine=MyISAM default charset=utf8 comment '角色表';
    
    DROP TABLE IF EXISTS php34_admin_role;
    CREATE TABLE php34_admin_role
    (
    	admin_id tinyint unsigned not null comment '管理员的id',
    	role_id smallint unsigned not null comment '角色的id',
    	key admin_id(admin_id),
    	key role_id(role_id)
    )engine=MyISAM default charset=utf8 comment '管理员角色表';
    
    DROP TABLE IF EXISTS php34_admin;
    CREATE TABLE php34_admin
    (
    	id tinyint unsigned not null auto_increment,
    	username varchar(30) not null comment '账号',
    	password char(32) not null comment '密码',
    	is_use tinyint unsigned not null default '1' comment '是否启用 1:启用0:禁用',
    	primary key (id)
    )engine=MyISAM default charset=utf8 comment '管理员';
    INSERT INTO php34_admin VALUES(1,'root','bafcbdc80e0ca50e92abe420f506456b',1);
    
    
    # 角色表 role
    #id    role_name
    #-------------
    # 1        a
    # 2        b
    
    # 权限表 privilege
    #id    pri_name
    #-------------
    # 1        a
    # 2        b
    # 3        c
    
    # a角色拥有bc两个权限
    #php34_role_privilege
    #role_id   pri_id
    #--------------------
    #   1        2              -->  1这个角色拥有2这个权限
    #   1        3              -->  1这个角色拥有3这个权限
    
    # 有以上五张表之后写SQL取出管理员ID为3的管理员所拥有的所有的权限
    # 流程:1. 先取出3这个管理员所在的角色ID 
    # SELECT role_id FROM  php34_admin_role WHERE admin_id=3
    # 2. 再取出这些角色所拥有的权限的ID 
    # SELECT pri_id FROM php34_role_privilege WHERE role_id IN (1上面的结果)
    # 3. 再根据权限ID取出这些权限的信息
    # SELECT * FROM php34_privilege WHERE id IN(2的结果)
    # 最终:
    # SELECT * FROM php34_privilege WHERE id IN(
    #	SELECT pri_id FROM php34_role_privilege WHERE role_id IN (
    #		SELECT role_id FROM  php34_admin_role WHERE admin_id=3
    #	)
    # )
    # 写法二、
    # SELECT a.*
    #   FROM php34_privilege a,php34_role_privilege b,php34_admin_role c
    #    WHERE c.admin_id=3 AND b.pri_id=a.id AND b.role_id=c.role_id
    # 写法三、
    # SELECT b.*
    #  FROM php34_role_privilege a
    #   LEFT JOIN php34_privilege b ON a.pri_id=b.id
    #   LEFT JOIN php34_admin_role c ON a.role_id=c.id
    #    WHERE c.admin_id=3
    

      

  • 相关阅读:
    Android 4.3 系统裁剪——删除不使用的app及添加自己app
    poj Muddy Fields
    在一台服务器上搭建相对高可用HiveServer实践
    HashMap在并发场景下踩过的坑
    搜索实时个性化模型——基于FTRL和个性化推荐的搜索排序优化
    关于扁平化视觉设计趋势的一些小分享
    如何从“点子”落地到“执行”?—完整解析1个手游传播类mini项目的进化
    网站规划通识:原型图绘制的一些注意事项
    内容社交产品中的关键数据——获得良好反馈的用户比例
    白木彰:具有普遍性的设计力
  • 原文地址:https://www.cnblogs.com/yexiangwang/p/5819547.html
Copyright © 2011-2022 走看看