Логика множественных подзапросов SQLite - PullRequest
0 голосов
/ 25 апреля 2019

Проблема состоит в том, чтобы попросить одного написать запрос, чтобы найти имена (имя, фамилия) сотрудников, у которых есть менеджер, который работает в отделе, расположенном в Соединенных Штатах.Вот ссылка на проблему, чтобы просмотреть таблицы: https://www.w3resource.com/sqlite-exercises/sqlite-subquery-exercise-3.php.

Для подзапроса я выполнил левое соединение по идентификатору местоположения между таблицами отделов и местоположений, а затем выбрал «US» для country_idи возвратил manager_id

Для внешнего запроса я выбрал таблицу Employee, выбрал manager_ids из списка подзапросов.

    SELECT first_name, last_name
    FROM Employees
    WHERE manager_id IN (SELECT manager_id
        FROM Departments d LEFT JOIN Locations l ON d.location_id = l.location_id
        WHERE country_id = 'US')
    ORDER BY first_name;

С моим кодом я не получил правильный ответ, те же результаты, что и набор результатов / вывод, показанный на веб-сайте.Всего в правильном ответе три подзапроса.Я не понимаю, какова цель включения подзапроса, включающего таблицу сотрудников (самый внешний подзапрос).Я понимаю, что именно здесь я запутался, но не понимаю, почему.

    SELECT first_name, last_name 
    FROM employees 
    WHERE manager_id IN 
       (SELECT employee_id 
        FROM employees 
        WHERE department_id IN 
           (SELECT department_id 
            FROM departments 
            WHERE location_id IN 
                (SELECT location_id 
                 FROM locations 
                 WHERE country_id='US')));

1 Ответ

1 голос
/ 25 апреля 2019

Вам необходимо объединить все столы:

select e.first_name, e.last_name
from employees e 
inner join employees m on m.employee_id = e.manager_id 
inner join departments d on d.department_id = m.department_id
inner join locations l on l.location_id = d.location_id
where l.country_id='US'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...