Portál AbcLinuxu, 8. května 2025 21:09
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.