SELECT idemployee, lastname, firstname,
(SELECT namedep FROM department
WHERE numdep = 120) depname
FROM employee
WHERE numdep = 120;
Что возвращает заявление? Как вложенный выбор влияет на результат?oracle sql inested select in select
SELECT idemployee, lastname, firstname,
(SELECT namedep FROM department
WHERE numdep = 120) depname
FROM employee
WHERE numdep = 120;
Что возвращает заявление? Как вложенный выбор влияет на результат?oracle sql inested select in select
Это действительно простой запрос. Без примеров таблиц и данных в них мы не можем точно указать, что будет возвращать запрос, но это должно быть что-то вроде этого.
idemployee | lastname | имя пользователя | depname
1 | Смит | Джон | Сантехника
2 | Доу | Джейн | Санитария
Нарушение: SELECT namedep ОТ отдела ГДЕ numdep = 120, похоже, получает название отдела для отдела № 120. Это будет отображаться в последнем столбце для каждой строки основного запроса.
ВЫБРАТЬ idemployee, имя, фамилия работника FROM WHERE numdep = 120, кажется, просто выбрав идентификатор сотрудника, фамилию и имя из таблицы сотрудников для каждого в отделе 120.
Вы могли бы написать это гораздо больше, просто как
SELECT e.idemployee Employee_ID, e.lastname, e.firstname, d.namedep Department_name
FROM employee e inner join department d on e.numdep = d.numdep
WHERE d.numdep = 120
Это вернет те же результаты. Было бы гораздо более безопасным. Также было бы намного проще перейти на работу для разных отделов, нескольких отделов или всех отделов.
Я просто присоединился к таблицам вместе на основе общего столбца, numdep и выбрал то, что я хотел от таблицы. Я также добавил псевдонимы (e, d), поэтому мне не пришлось набирать сотрудников и отдел для конкретной таблицы, на которую я ссылался.
Это называется коррелированным подзапросом. Это более обычно пишется как Явные:
SELECT e.idemployee, e.lastname, e.firstname, d.namedep
FROM employee e left join
department d
on e.numdep = d.numdep
WHERE e.numdep = 120;
Эти две формулировки не совсем то же самое, но в этом случае они, вероятно, возвращают те же результаты.
Не могли бы вы привести мне пример результата? – user4349397
thank you.it очень полезно – user4349397