Найти всех людей, которые работают под определенным менеджером (SQL) - PullRequest
2 голосов
/ 27 февраля 2020

В настоящее время я пытаюсь найти список всех сотрудников, которые работают под руководством данного менеджера. Прямо сейчас у меня есть следующее решение, которое использует рекурсивный CTE: https://www.db-fiddle.com/f/oTTpJ9tTudkFrqy1WJghZj/0

Проблема с этим решением состоит в том, что оно работает только с MySQL 8.0+, и я ' Я не уверен, сколько других SQL дистрибутивов поддерживают CTE. Есть ли SQL -agnosti c решение этой проблемы, которое будет работать с более старыми версиями MySQL? Я пытался решить эту проблему с помощью циклов, где у меня была функция с l oop, которая выбирала идентификаторы сотрудников, в которые входит идентификатор менеджера (список идентификаторов сотрудников из предыдущей итерации), и объединяла набор результатов, но вы не можете использовать GROUP_CONCAT Насколько я могу судить, в предложении where.

Буду признателен за любые идеи, спасибо!

1 Ответ

0 голосов
/ 27 февраля 2020

Я думаю, что это можно решить, используя традиционный способ SQL

SELECT 
e.employee_id AS EmployeeId,
CONCAT(e.first_name, ' ', e.last_name) AS EmployeeName,
CONCAT(m.first_name, ' ', m.last_name) AS ManagerName
FROM Employees e
INNER JOIN Employees m ON e.manager_id = m.employee_id
ORDER BY m.employee_id, e.employee_id 

Надеюсь, это значительно уменьшит сложность

...