Найти всех прямых подчиненных конкретного сотрудника в SQL

#sql

#sql

Вопрос:

У меня есть таблица сотрудников и их начальников:

 CREATE TABLE IF NOT EXISTS Personnel (

emp CHAR(10) NOT NULL PRIMARY KEY,

boss CHAR(10) DEFAULT NULL REFERENCES Personnel(emp),

salary DECIMAL(6,2) NOT NULL DEFAULT 100.00);
  

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

 SELECT (SELECT E2.emp FROM Personnel E2 WHERE E1.emp = E2.boss), E1.emp FROM Personnel E1;
  

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

 INSERT INTO Personnel VALUES('Ivanov', Null, 1000);

INSERT INTO Personnel VALUES('Petrov', 'Ivanov', 900);

INSERT INTO Personnel VALUES('Sidorov', 'Ivanov', 850);

INSERT INTO Personnel VALUES('Smirnov', 'Petrov', 840);

INSERT INTO Personnel VALUES('Fedorov', 'Petrov', 800);

INSERT INTO Personnel VALUES('Andreev', 'Sidorov', 700);

INSERT INTO Personnel VALUES('Alekseev', 'Sidorov', 700);

INSERT INTO Personnel VALUES('Borisov', 'Sidorov', 740);
  

Комментарии:

1. Пометьте свой вопрос базой данных, которую вы используете. Образцы данных в виде текстовых таблиц намного предпочтительнее изображений. И скрипка db / sql полезна. Также определите, что означает «прямой подчиненный».

2. @GordonLinoff Я добавил ВСТАВКИ для создания базы данных.

Ответ №1:

«Прямой подчиненный» означает, что начальник — это человек, о котором идет речь. Следовательно, простого where предложения должно быть достаточно:

 select p.*
from personnel p
where p.boss = ?;
  

Это ? заполнитель для имени босса.

Комментарии:

1. @student . , , Ваш комментарий совершенно бесполезен. Что значит «не работает»? Он должен делать именно то, что задумано, и это должно ответить на ваш вопрос.

2. Вывод пустой.

3. Хорошо, как мне перебрать всех боссов (сотрудников)?

4. @student . , , Это не тот вопрос, который вы задали здесь.