Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Выборка из таблицы, ссылающаяся на саму себя / 3 сообщений из 3, страница 1 из 1
19.10.2016, 14:40
    #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
19.10.2016, 18:52
    #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
20.10.2016, 20:29
    #39331049
ravs23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы, ссылающаяся на саму себя
White Owl,

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


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