Witam, mam do zrobienia zapytanie rekurencyjne do tego zadania:
"2. Za pomocą hierarchicznego (rekurencyjnego) zapytania (https://www.postgresql.org/docs/9.5/querieswith.html) pobierz dane wszystkich pracowników posortowane zgodnie z zajmowanym przez nich miejscem w hierarchii organizacyjnej firmy. Zacznij od stanowiska najwyższego szczebla tj. dyrektora (Karolina Karolińska, bez przypisanej wartości w kolumnie przełozony_id). Do wyników dołącz kolumnę szczebli_do_najwyzszego_stanowiska (dyrektorowi przypisz wartość równą 0, patrz tabela 2). Następnie skonstruuj drugie zapytanie, które pobierze w pierwszym wierszu wyników jakiegoś pracownika najniższego szczebla np. Adama Adamskiego, drugi wiersz będzie zawierał jego przełożonego itd., aż do ostatniego wiersza zawierającego dane dyrektora. Do wyników dołącz kolumnę szczebli_od_najnizszego_stanowiska."
Podpowiedź z instrukcji:
Mój kod:
WITH RECURSIVE hierarchia_pracownikow AS (
SELECT *, 0 AS szczebli_do_najwyzszego_stanowiska
FROM pracownik
WHERE przelozony_id IS NULL
UNION ALL
SELECT p.*, (szczebli_do_najwyzszego_stanowiska + 1) as szczebli_do_najwyzszego_stanowiska
FROM pracownik AS p
JOIN hierarchia_pracownikow AS hp ON hp.przelozony_id=p.przelozony_id )
SELECT * FROM hierarchia_pracownikow;
I sprawa wygląda tak, że obojętnie w jaki sposób dam warunek złączenia, to zawsze mam tylko taki wynik:
Czy mógłby ktoś podpowiedzieć co jest źle w warunku złączenia? Godzinę się z tym męczę.