Problem s dotazem mozna hiearchickym

Milan Šorm sorm na pef.mendelu.cz
Úterý Červenec 17 17:01:07 CEST 2001


Tue, Jul 17, 2001 ve 04:02:51PM +0200 Vladimir Naprstek napsal(a):
# Hierarchicky dotaz (SELECT level, od, do FROM vztahy START WITH od=1 CONNECT 
# BY PRIOR do = od)
#
#---cut---
# 
# K tomu, abychom urcili konec, musime omezit LEVEL jen na zaznamy se stoupajici 
# hodnotou, t.j. jen prvni tri radky, a to bohuzel nevim jak. Oracle vraci cely 
# strom a Vy potrebujete jen jednu vetev. Podle mne by resenim bylo takovyto 
# dotaz prochazet procedurou a sledovat hodnotu LEVEL. Tak rozsekat vracena data 
# na vetve a z kazde vzit prvni OD a posledni DO.

kdyz jsem se nad tim zamyslel, tak pro

1 -> 6
6 -> 8
8 -> 7
6 -> 21

dokazu

LEVEL|OD     |DO
-----+-------+----------
    1|      8|         7
    2|      6|         8
    3|      1|         6
    1|      6|        21
    2|      1|         6

a odtud tedy bych potreboval zachovat sloupec OD, akorat psat do DO porad
stejne cislo dokud level stoupa (dokud je LEVEL jednoho radku mensi nez
LEVEL dalsiho radku), tedy:

8	7
6	7
1	7
6	21
1	21

a bude to dobre. ale potrebuju to bez procedury. neexistuje neco jako
ROOT_OF() tj zjisteni korene pro prave probihajici vetev ? to by mi desne
pomohlo.

--milan

# P.S. Co se stane, bude-li vysledek nasledujici (po prvnim pruchodu)
# OD 
# KONEC
# ------------
# 1 
# 4
# 3 
# 7
# 2 
# 6
# Je mozne pokracovat takto?
# OD KONEC
# ------------
# 1 
# 7

jestli chapu, tak

1	4
3	7
2	6

no 1	7 byt nemuze, to je pravda.

--milan

presto zatim diky

--milan


Další informace o konferenci Databases