Odniesienie do kolumny biorąc pod uwagę inną kolumnę

0

Cześć wszystkim.
Mam tabelę pracowników (EMPLOYEES), a w niej kolumny: EMPLOYEE_ID, LAST_NAME oraz MANAGER_ID (te będą dla nas istotne). Potrzebuję teraz wypisać nazwiska pracowników w jednej kolumnie, a w kolumnie obok nazwiska ich kierowników posortowane rosnąco wg nazwisk kierowników. Jak to zrobić? Trzeba to traktować jako jakieś osobne tabele? Chodzi o to, że załóżmy mamy pracownika, który ma kierownika o MANAGER_ID = 120, więc nazwiska (LAST_NAME) tego pracownika potrzebujemy mieć nazwisko innego pracownika będącego dla niego kierownikiem, który ma EMPLOYEE_ID = 120.
Z góry dzięki za pomoc!

1

Połącz tabelę z samą sobą po tym polu.

0

Napisałem to tak:

SELECT DISTINCT e.last_name "nazwisko pracownika", a.last_name "nazwisko kierownika" FROM employees e, employees a WHERE e.manager_id = a.manager_id ORDER BY "nazwisko kierownika" ASC

Dałem DISTINCT, bo liczyłem, że wtedy pracownicy nie będą się powtarzać, ale chyba tak to nie działa... W sumie pracowników w tabeli EMPLOYEES mam 107, a ta komenda wyrzuca mi 786 wierszy, gdzie np. dany pracownik występuje kilka razy, a przecież nie powinno tak być.. Dlatego próbowałem z tym DISTINCT, ale nic to nie dało. Czego ja tutaj nie widzę, że tak papram sprawę? Wiem, że wierszy powinno mi zwrócić 106 (bo jeden pracownik nie ma kierownika, jest bossem bossów :) ).

EDIT:
Dobra, mój szkolny błąd. Porównywałem pracowników przez MANAGER_ID jednego i drugiego, a ten drugi powinien być przez EMPLOYEE_ID. Powinno być tak:

SELECT DISTINCT e.last_name "nazwisko pracownika", a.last_name "nazwisko kierownika" FROM employees e, employees a WHERE e.manager_id = a.employee_id ORDER BY "nazwisko kierownika" ASC

Teraz działa :). Dzięki za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1