接下来需要显示:表用户名中所有具有“ Admin”位置且位于“ 3RD Floor”位置且带有IN子句的fNAME和lNAME
create table company
(
CODE_COMPANY char(30),
NAME_COMPANY varchar2(30) not null,
MAIL_COMPANY varchar2(30) null,
constraint PK_CODE_COMPANY primary key (CODE_COMPANY),
);
create table USERNAME
(
NAME_USERNAME varchar2(30),
USER_LOCATION number,
fNAME varchar2 (30) not null,
lNAME varchar2 (30) not null,
PHONE_USER char(13) null,
USER_POSITION varchar2 (30),
check (USER_POSITION in('Admin', 'Superadmin', 'Technician', 'Student')),
constraint PK_NAME_USERNAME primary key (NAME_USERNAME),
constraint FK_USER_LOCATION foreign key (USER_LOCATION) references uLOCATION (LOCATION)
);
create table uLOCATION
(
LOCATION number,
CODE_COMPANY char(30),
NAME_LOCATION varchar2(30) not null,
FLOOR_LOCATION varchar2(10),
check (FLOOR_LOCATION in ('MAIN_FLOOR', '1ST FLOOR', '2ND FLOOR', '3RD FLOOR')),
constraint PK_LOCATION primary key (LOCATION),
constraint FK_CODE_COMPANY_L foreign key (CODE_COMPANY) references company (CODE_COMPANY),
);
答案 0 :(得分:2)
SELECT U.fName, U.lName
FROM USERNAME AS U
WHERE U.USER_POSITION = 'Admin'
AND
U.USER_LOCATION IN (
SELECT L.LOCATION
FROM uLOCATION AS L
WHERE L.FLOOR_LOCATION = '3RD FLOOR'
);
答案 1 :(得分:0)
选择fName,lName 来自USERNAME,uLOCATION,COMPANY 其中,uLOCATION.LOCATION = USERNAME.USER_LOCATION和COMPANY.CODE_COMPANY = uLOCATION.CODE_COMPANY;
但是如何指定我需要NAME_COMPANY ABC用户Admin? 如何再添加2个WHERE子句?
答案 2 :(得分:0)
轻微修改NAME_COMPANY的SQLRaptor答案:
SELECT U.fName, U.lName
FROM USERNAME AS U
WHERE U.USER_POSITION = 'Admin'
AND
U.USER_LOCATION IN (
SELECT L.LOCATION
FROM uLOCATION AS L JOIN COMPANY AS C
ON L.CODE_COMPANY=C.CODE_COMPANY
WHERE L.FLOOR_LOCATION = '3RD FLOOR' AND C.NAME_COMPANY = 'ABC'
);