#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')