以下のようなスキーマがあります。
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