powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Выборка из таблицы, ссылающаяся на саму себя
3 сообщений из 3, страница 1 из 1
Выборка из таблицы, ссылающаяся на саму себя
    #39329892
ravs23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая таблица

idNameNachalnikID1Директор02ГлавБух13Бухгалтер24ГлавИнженер15Инженер46Мастер5

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE Empl (
'id'                 INTEGER NOT NULL,
'Name'            TEXT NOT NULL,
'NachalnikID'    INTEGER NOT NULL,
PRIMARY KEY ('id' ASC)
);

INSERT INTO 'Empl'  VALUES( 1, 'Директор', 0);
INSERT INTO 'Empl'  VALUES( 2, 'ГлавБух', 1);
INSERT INTO 'Empl'  VALUES( 3, 'Бухгалтер', 2);
INSERT INTO 'Empl'  VALUES( 4, 'ГлавИнженер', 1);
INSERT INTO 'Empl'  VALUES( 5, 'Инженер', 4);
INSERT INTO 'Empl'  VALUES( 6, 'Мастер', 5);



Хочу сделать запрос что бы показывало у какого сотрудника кто начальник.
Делаю такой запрос и всё получается нормально.

Код: sql
1.
2.
3.
4.
SELECT  em2.Name as 'Служащий', em1.Name as 'Начальник'
FROM Empl em1
JOIN Empl em2
ON em1.id = em2.NachalnikID



НО если взять ситуацию, когда у одного сотрудника могут быть несколько начальников одновременно, то нужно что бы показывало всех возможных начальников.
Вот исходная таблица и из неё не получается сделать такую выборку. Не хватает опыта.

idNameNachalnikIDNachalnikID21Директор02ГлавБух13Бухгалтер214ГлавИнженер15Инженер416Мастер53

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE Empl (
'id'                 INTEGER NOT NULL,
'Name'            TEXT NOT NULL,
'NachalnikID'    INTEGER NOT NULL,
'NachalnikID2'    INTEGER,
PRIMARY KEY ('id' ASC)
);

INSERT INTO 'Empl'  VALUES( NULL, 'Директор', 0, NULL);
INSERT INTO 'Empl'  VALUES( NULL, 'ГлавБух', 1, NULL);
INSERT INTO 'Empl'  VALUES( NULL, 'Бухгалтер', 2, 1);
INSERT INTO 'Empl'  VALUES( NULL, 'ГлавИнженер', 1, NULL);
INSERT INTO 'Empl'  VALUES( NULL, 'Инженер', 4, 1);
INSERT INTO 'Empl'  VALUES( NULL, 'Мастер', 5, 3);



Ожидаемый результат

ДолжностьНачальник1Начальник2ГлавБухДиректорnullБухгалтерГлавБухДиректорГлавИнженерДиректорnullИнженерГлавИнженерДиректорМастерИнженербБухгалтер
...
Рейтинг: 0 / 0
Выборка из таблицы, ссылающаяся на саму себя
    #39330138
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ravs23,

Код: sql
1.
2.
3.
4.
5.
6.
SELECT  em0.Name as 'Служащий', 
        em1.Name as 'Начальник 1'
        em2.Name as 'Начальник 2'
FROM Empl em0
     JOIN Empl em1 ON em1.id = em0.NachalnikID
LEFT JOIN Empl em2 ON em2.id = em0.NachalnikID2
...
Рейтинг: 0 / 0
Выборка из таблицы, ссылающаяся на саму себя
    #39331049
ravs23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

Благодарю. Я так и думал что это будет не сложный запрос, но не мог смекнуть какой )
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Выборка из таблицы, ссылающаяся на саму себя
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]