我有一个如下所示的架构:
CREATE TABLE rruser (
id NUMBER(32,0) NOT NULL,
name VARCHAR2(30) NOT NULL,
fullname VARCHAR2(100) NOT NULL,
active_flag CHAR(1) DEFAULT 'N' NOT NULL
)
CREATE TABLE rruser_group (
user_id NUMBER(32,0) NOT NULL,
group_id NUMBER(32,0) NOT NULL
)
CREATE TABLE rrgroup (
id NUMBER(32,0) NOT NULL,
name VARCHAR2(100) NOT NULL,
code VARCHAR2(20) NOT NULL
)
CREATE TABLE rrgroup_permission (
group_id NUMBER(32,0) NOT NULL,
permission_id NUMBER(32,0) NOT NULL
)
CREATE TABLE rrpermission (
id NUMBER(32,0) NOT NULL,
name VARCHAR2(100) NOT NULL,
description VARCHAR2(1000) NOT NULL
)
连接性使得 RRUSER 通过表 RRUSER_GROUP 链接到 RRGROUP,并且 RRGROUP 通过表 RRGROUP_PERMISSION 进一步链接到 RRPERMISSION。
我必须找出 RRUSER 中活动标志值等于“Y”的用户;我正在使用以下查询
SELECT * FROM rruser WHERE ACTIVE_FLAG = 'Y'
然后我必须找出有写权限的用户;在最后一个表 RRPERMISSION 中,有一个列 NAME,它具有该列的值的写入权限'write'
。我可以使用什么查询来获取此信息?我知道应该使用 INNER JOIN 来实现。
现在,我尝试查询特定用户以了解他是否具有写权限,并发现他具有这样的写权限...
SELECT count(ID) FROM rruser WHERE ACTIVE_FLAG = 'Y';
SELECT * FROM rruser WHERE ACTIVE_FLAG = 'Y' AND FULLNAME = 'sss'
SELECT * FROM rruser_group WHERE USER_ID = 1100
SELECT * FROM rrgroup WHERE ID = 113;
SELECT * FROM rrgroup_permission WHERE GROUP_ID = 189 ;
SELECT * FROM rrpermission WHERE ID = 990