Portál AbcLinuxu, 5. listopadu 2025 07:58
level | full_path
-------+---------------------
2 | {1,154}
3 | {1,154,199}
4 | {1,154,199,1037}
4 | {1,154,199,2385}
3 | {1,155,2359}
4 | {1,155,2359,8}
5 | {1,155,2359,8,1073}
Z ni bych potreboval vydolovat radky:
2 | {1,154}
3 | {1,155,2359}
tj. pokud jdu po radcich tabulky tak vysledkem jsou pouze radky kdyz je hodnota sloupce level mensi nez v predchozim radku (+ samozrejme prvni radek). Jedna se o prezentaci stromu v databazi a hledam hlavni uzly z tabulky.
Napada me snadne reseni proceduralni, jednoduse projdu cyklem celou tabulku a budu porovnavat ten level. To mi prijde ale v databazich prasarna.
Lze to prosim nejak resit primo dotazem?
diky
Řešení dotazu:
SELECT * FROM (SELECT *, lag(level) over() as prev_level FROM tabulka) mezivysledek
WHERE COALESCE(level > prev_level, True)
Ale nezdá se mi, že to co chceš je to co opravdu chceš. Když budeš mít strom
1 2 2Tak budeš chtít opravdu zobrazit jedničku a v případě, že první dvojka bude mít děti, druhou dvojku? To se mi zdá poměrně divným kritériem....
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.