Использование оператора NOT для отображения данных с использованием нескольких таблиц - PullRequest
0 голосов
/ 29 марта 2019

У меня вопрос на домашнее задание, в котором меня спрашивают: «Какие сотрудники не назначены на компьютеры HP?»

Я пробовал следующий метод:

select empname from Employee where empnum in
(select empnum from PC where comp in
  (select comp from computer where MFRNAME NOT LIKE 'HP'))

Тем не менее. Я все еще получаю данные от сотрудника Дугласа Дэлли, у которого есть два компьютера. Один из которых является HP, а другой не HP. Но я предполагаю найти только сотрудников, которые вообще не используют компьютеры HP. Как я могу отсеять этот результат?

Я прикрепил ссылку на свои данные ниже.

enter image description here

1 Ответ

0 голосов
/ 29 марта 2019

Вы можете использовать not exists, если хотите получить сотрудников, которые также не используют ноутбуки HP.

select empname
from Employee em
where not exists (
  select 1
  from PC p 
  join comp c on c.comp = p.comp 
  where em.empnum = p.empnum  
  and c.MFRNAME like '%HP%'
)  

Это должно дать вам сотрудников, которые не используют компьютеры, такие как HP, и если HP - абсолютная строка, вы можете указать как c.MFRNAME = 'HP'

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