oracle sql dev, используя подзапрос, список зданий, в которых пользователь не заинтересован - PullRequest
0 голосов
/ 21 мая 2019

В настоящее время я пытаюсь получить в базе данных список зданий, BuildingNum, BuildingName и имя_экземпляра, у которых есть пользователь, который не имеет интереса (интереса.description = null).

(PK) = Primary Key
(FK) = Foreign Key

Схема базы данных выглядит следующим образом:

Building(buildingNum(PK), Description, instname, buildName, state, postcode)
User(UNum(PK), buildingNum(FK), Surname, FirstName, initials, title)
File(FileNum(PK), title)
UserAccount(FileNum(PK)(FK), UNum(PK)(FK))
Job(JobNum(PK), id, title)
Interest(JobNum(PK)(FK), UNum(PK)(FK), Description)

До сих пор я пробовал следующий блок кода:

select B.buildingNum, B.BuildName, B.instname
from Building B join User U
where B.deptNum = U.deptNum in (select I.Description
                    from interest I
                    where description = null);

Я борюсь сКак сделать это с помощью подзапроса, все, что я получаю, это ошибка, так как это не работает.Я не уверен, должен ли я использовать соединение таким образом или я правильно добавил подзапрос.Спасибо всем, кто может помочь.

1 Ответ

2 голосов
/ 21 мая 2019

Если вы не хотите интересов, используйте exists:

select b.buildingNum, b.BuildName, b.instname
from Building b
where exists (select 1
              from users u left join
                   interest i
                   on i.unum = u.unum
              where b.deptNum = u.deptNum and
                    i.unum is null  -- no interests
             );

Подзапрос возвращает пользователей (в данном здании), которые не имеют интересов.exists просто говорит, что хотя бы один существует.

Как примечание: = null никогда не используется для сравнений.Он никогда не возвращает истинное значение.Правильный синтаксис: is null.

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