SQL, проблемы начинающих с упражнениями базы данных Northwind

Я новичок в SQL, поэтому не знаю, как решить эту проблему. Это связано с Northwind, сделано с Oracle. У меня есть таблица сотрудников, и у каждого сотрудника есть идентификатор другого сотрудника в качестве менеджера (т.е. человека, которому подчиняется сотрудник):

Мне нужно перевернуть его так, чтобы вместо менеджера у сотрудника был список подчиненных в одной ячейке.

Как мне подойти к этому? Я понятия не имею...


person EpicCheese    schedule 31.03.2016    source источник
comment
подчиненные - это только подчиненные N-1 или также N-2, N-3 и т.д... ?   -  person Jean-Christophe Blanchard    schedule 31.03.2016
comment
Вам нужно, чтобы это было результатом вашего запроса? Или вам нужно, чтобы это было дизайном вашей схемы таблицы? Если последнее, вам следует отказаться от этой идеи и вместо этого создать подчиненную таблицу.   -  person squillman    schedule 31.03.2016
comment
какова структура таблицы сотрудников?   -  person Jean-Christophe Blanchard    schedule 31.03.2016
comment
@squillman Это должен быть результат запроса, и таблицу никак нельзя редактировать. Это упражнение для курса по базам данных.   -  person EpicCheese    schedule 31.03.2016
comment
@Jean-Christophe Blanchard Информация о базе данных и ее таблицах есть на домашней странице Northwind по адресу northwinddatabase.codeplex.com.   -  person EpicCheese    schedule 31.03.2016
comment
Я думаю, вы должны начать с того, чтобы узнать, где хранится идентификатор менеджера, я не вижу его в модели.   -  person Jean-Christophe Blanchard    schedule 31.03.2016
comment
@ Жан-Кристоф Бланшар А, извини. Это колонка REPORTSTO. Я неправильно запомнил его название в своем ОП.   -  person EpicCheese    schedule 31.03.2016
comment
Northwind — это образец базы данных SQL Server, а не Oracle. Зачем вам использовать эту схему в базе данных Oracle? Вы уверены, что используете Oracle, а не SQL Server? Или, может быть, вы используете Oracle со схемой HR, а не Northwind? По сути, также не имеет смысла хранить несколько значений в одной ячейке — это нарушает все правила правильной нормализации.   -  person Justin Cave    schedule 31.03.2016


Ответы (2)


Вы можете объединить их в ячейку, но я не уверен, что это то, что вы хотите, или какие данные будут использоваться в этой форме. Вы хотите, чтобы данные находились в отдельных ячейках друг от друга.

Вот также пример решения оракула. https://stackoverflow.com/a/9621167

person bfs    schedule 31.03.2016
comment
Спасибо! Эти примеры — лучшее, что у меня есть. - person EpicCheese; 01.04.2016

Я думаю, что для перечисления всех подчиненных вы должны использовать иерархический запрос:

select *
from
employees
start with NAME = <NAME>
connect by REPORTSTO = prior EMPLOYEE_ID ;  

у вас тоже есть пример здесь Иерархический запрос: найти все дерево от корня до любого узла

NB Помещение списка в одну ячейку — это следующий шаг.

отредактируйте восстановленный employee_id в соединении

person Jean-Christophe Blanchard    schedule 31.03.2016