Oracle SQL, не могу разобраться с левым соединением

#sql #oracle #join #left-join

#sql #Oracle #Присоединиться #левое соединение

Вопрос:

У меня есть 2 таблицы:

Person таблица со столбцом person_id

Employee таблица со столбцами emp_type = full или part

Мне нужен запрос, который возвращает всех Person , но исключает штатных сотрудников. С чем я борюсь, так это с тем, что не все люди обязательно находятся в Employee таблице.

Может кто-нибудь мне помочь? Спасибо!

Комментарии:

1. Пожалуйста, покажите вашу фактическую структуру таблицы и, в идеале, некоторые образцы данных.

2. @Kritner Это предполагает, что у сотрудника может быть только одно обозначение, которое мы на самом деле не знаем, потому что OP не опубликовал никакой реальной структуры таблицы или данных.

3. @TimBiegeleisen да, вот почему я только сделал комментарий 🙂

4. Но я все равно неправильно понял вопрос, бахаха

5. Это домашнее задание? Что вы уже пробовали?

Ответ №1:

Вы можете попробовать код ниже, но вы не предоставили нам структуру своих таблиц, поэтому я могу только догадываться, что вы здесь имеете в виду.

 select * 
from person p
left join employee e on p.person_id = e.person_id
where p.emp_type <> 'full'
  

Ответ №2:

Поскольку вы не опубликовали полную информацию о запросе или структуре таблицы, вам нужно будет внести коррективы. Но использование not exists предложения, вероятно, является самым простым способом сделать это.

 select p.*
  from person p
 where not exists (select null
                     from employee e
                    where e.person_id = p.person_id
                      and e.emp_type = 'full')