przechodzenie po wezlach drzewa w metodzie 5 z FAQ w PL/SQL
pstachy - 28-02-2006 13:13
przechodzenie po wezlach drzewa w metodzie 5 z FAQ w PL/SQL
Witam serdecznie, Potrzebuje pomocy w napisaniu procedury w PL/SQL, która bedzie przechodzic po wezlach drzewa zaimplementowanego tak jak w metodzie 5 z FAQ dot. drzewek. Problem polega na tym, ze procedura powinna przechodzic po wszystkich wezlach od zadanego jako parametr wezla...
Mam taki oto pomysl ( nie wiem czy jest cos wart, prosze o weryfikacje:):
1. procedura wyswietla* wszystkich potomków (bezposrednich i posrednich) wezla, którego id zostalo zadane jako parametr 2. sprawdza czy istnieje rodzic i wyswietla jego potomków (j.w.) ale bez juz tych wyswietlonych w kroku 1 3. powtarza krok 2 dopoki istnieje rodzic...
*wyswietla napisalem tak przykladowo, bo generalnie chodzi o to by mozna bylo wykonac na tych wezlach jakakolwiek zadana operacje:)
Prosze o pomoc bo nie potrafie za bardzo przekuc to na PL/SQL a bardzo potrzebuje... Jakby ktos mial inny pomysl to tez bede wdzieczny, chodzi w sumie o to by dzialalo
Pozdrawiam i z gory dzieki
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 28-02-2006 13:13
pstachy wrote: > Witam serdecznie, > Potrzebuje pomocy w napisaniu procedury w PL/SQL, która bedzie > przechodzic po wezlach drzewa zaimplementowanego tak jak w metodzie > 5 z FAQ dot. drzewek. Problem polega na tym, ze procedura powinna > przechodzic po wszystkich wezlach od zadanego jako parametr > wezla... > > Mam taki oto pomysl ( nie wiem czy jest cos wart, prosze o > weryfikacje:): > > 1. procedura wyswietla* wszystkich potomków (bezposrednich i > posrednich) wezla, którego id zostalo zadane jako parametr > 2. sprawdza czy istnieje rodzic i wyswietla jego potomków (j.w.) ale > bez juz tych wyswietlonych w kroku 1 > 3. powtarza krok 2 dopoki istnieje rodzic... > > *wyswietla napisalem tak przykladowo, bo generalnie chodzi o to by > mozna bylo wykonac na tych wezlach jakakolwiek zadana operacje:) > > Prosze o pomoc bo nie potrafie za bardzo przekuc to na PL/SQL a bardzo > potrzebuje... > Jakby ktos mial inny pomysl to tez bede wdzieczny, chodzi w sumie o to > by dzialalo
Cała idea metody 5 polega na tym, żeby wyeliminować rekurencje, bo rekurencja w SQL'u jest kosztowna (w oraclu select ma klauzule connect by, ale nie wiem jak z jej wydajnością). Jeśli chcesz wykonać procedure na wszystkich potomkach danego rodzica robisz jeden select:
select procedura(child_id) from connections where parent_id = $id_rodzica
-- P.M.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
=?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
=?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?=
=?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
[newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
zanotowane.pldoc.pisz.plpdf.pisz.plradioaktywni.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|