Что я здесь делаю неправильно? Кто-нибудь может помочь?
1. Используйте некоррелированный подзапрос, найдите имена сотрудников, которые не работают ни над одним проектом.
Отвечать:
SELECT *
FROM employee_name
WHERE ID IN (SELECT employee_id FROM projectinfo
WHERE project IS NOT NULL);
2. Используйте коррелированный подзапрос, найдите имена сотрудников, которые не работают ни над одним проектом.
Отвечать:
SELECT *
FROM employee_name
WHERE EXISTS (SELECT * FROM project
WHERE project.employee_id = project_id
AND projectinfo.project IS NOT NULL);
Вы можете подать в суд на LEFT JOIN
следующим образом для некоррелированного подзапроса следующим образом:
SELECT e.* FROM employee_name E -- is employee_name a table? if no, then use proper table name
LEFT JOIN project P
ON E.ID = P.employee_id
WHERE P.project_id IS NULL;
Использование коррелированного подзапроса
SELECT * FROM employee_name E
WHERE NOT EXISTS (SELECT 1 FROM project p
WHERE p.employee_id= e.employee_id);
Примечание. Я считаю, что запись о сотруднике недоступна в таблице project
, если у сотрудника нет назначенного проекта.
Это ничего не вернет. И лучше не использовать не в
Извините, что беспокою вас снова, используя подзапрос, как я могу найти имена сотрудников с самой высокой оценкой? Не могли бы вы рассказать мне? Я пытаюсь выучить. Я написал это: ВЫБЕРИТЕ имя, фамилию, job_id, зарплату ОТ сотрудников, ГДЕ ставка> ВСЕ (ВЫБЕРИТЕ ставку ОТ сотрудников)
@Fahima, во-первых, вы должны принять этот ответ, если он решил вашу проблему, а во-вторых, запрос, который вы использовали для сотрудника с самой высокой ставкой, верен, но вы хотели бы попробовать это: SELECT first_name,last_name, job_id, salary FROM employees WHERE rate = (SELECT max(rate) FROM employees)
Можно мне тоже так написать? SELECT * FROM сотрудников ГДЕ emp_name НЕ В (SELECT emp_name FROM сотрудников);