Выберите из 3 таблиц с внешним ключом - PullRequest
0 голосов
/ 29 июня 2019

Необходимо отобразить следующее: все имена fNAME и lNAME из таблицы username имеют позицию «Admin» из позиции «3-й этаж», с предложением IN

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),
);

Ответы [ 3 ]

2 голосов
/ 29 июня 2019
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'
                          );
0 голосов
/ 29 июня 2019

Небольшое изменение ответа SQLRaptor для NAME_COMPANY:

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'
                          );
0 голосов
/ 29 июня 2019

выберите fName, lName из ИМЯ ПОЛЬЗОВАТЕЛЯ, uLOCATION, COMPANY, где uLOCATION.LOCATION = USERNAME.USER_LOCATION и COMPANY.CODE_COMPANY = uLOCATION.CODE_COMPANY;

Но как указать, что мне нужен администратор пользователя из NAME_COMPANY?как добавить еще 2 предложения WHERE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...