oracle - zapytanie hierarchiczne
Marcin 'goral' Goralski - 27-05-2006 00:39
oracle - zapytanie hierarchiczne
Witam,
jest tablica : create table produkt ( id_kategoria int not null, id_superkategoria int, nazwa_produktu varchar2(100) not null);
teraz mozna sobie 'przeleciec' cale drzewko produktow np tak
select lpad(' ', 2*level) || nazwa_produktu from produkt start with id_superkategoria is null connect by prior id_kategoria = id_superkategoria;
i dostaniemy ladne drzewko. Teraz chcialbym jednak wywalic pelne drzewko, ale tylko dla okreslonych kategorii produktu, nie zas dla wszystkich Probowalem dodac odpowiedni warunek do connect by, ale to chyba nie to .... troche sie pogubilem ... moze ktos podpowie ?
marcin
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 27-05-2006 00:39
Marcin 'goral' Goralski wrote: > Teraz chcialbym jednak wywalic pelne drzewko, ale tylko dla okreslonych > kategorii produktu, nie zas dla wszystkich
Można odwrócić drzewko:
SQL> select * from produkt;
ID_KATEGORIA ID_SUPERKATEGORIA NAZWA_PRODUKTU ------------ ----------------- -------------------- 1 Wszystko 2 1 Pod1 3 1 Pod2 4 2 PodPod1
SQL> select lpad(' ', 2*level) || nazwa_produktu drzewko 2 from produkt 3 start with id_kategoria = 4 4 connect by prior id_superkategoria = id_kategoria;
DRZEWKO ----------------- PodPod1 Pod1 Wszystko
-- Michał Kuratczyk
Marcin 'goral' Goralski - 27-05-2006 00:39
Michał Kuratczyk wrote:
> Można odwrócić drzewko:
Dzieki, ale chodzi o to, zeby go nie odwracac. Ze wzgledow funckcjonalnych, musi byc przedstawiona cala galaz drzewa z gory na dol, mimo, ze osobiscie sadze, ze to bzdura, poniewaz id_kategoria jest tak skonstruowane, ze pozwala zidentyfikowac natychmiast kazdy poziom wyzej oraz identyfikuje produkt jednoznacznie i unikalnie. Ale taki jest wymysl i zyczenie klienta, wiec nie mam wiele do powiedzenia.
marcin
PS poniewaz ilosc poziomow zagniezdzenia jest z gory narzucona i raczej niezmienna (4), wiec chyba rozwala ta tablice na pojedyncze tablice ...
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 27-05-2006 00:39
Marcin 'goral' Goralski wrote: > Dzieki, ale chodzi o to, zeby go nie odwracac. Ze wzgledow > funckcjonalnych, musi byc przedstawiona cala galaz drzewa z gory na dol,
Ale odwracasz tylko na chwilę:
SQL> select lpad(' ', 4-x) || nazwa_produktu drzewko from ( 2 select nazwa_produktu, level x 3 from produkt 4 start with id_kategoria = 4 5 connect by prior id_superkategoria = id_kategoria 6 ) order by x desc;
DRZEWKO --------------- Wszystko Pod1 PodPod1
I jest drzewko takie, jakie miało być na początku.
> PS poniewaz ilosc poziomow zagniezdzenia jest z gory narzucona i raczej > niezmienna (4), wiec chyba rozwala ta tablice na pojedyncze tablice ... No jeśli tak, to pewnie będzie najprościej. Aczkolwiek trzeba pamiętać, że jeśli klient mówi "to się nie zmieni", to na 95% zmieni się w najgorszym momencie (kiedy cały system będzie zbudowany w oparciu o założenie, że się nie zmieni i zupełnie nie będzie czasu, żeby przerabiać ten system). :->
-- Michał Kuratczyk
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle 19g +Insert +Insert +Insert...
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
=?iso-8859-2?q?[oracle_10g]_jak_da=E6_grant_do_gv$=2E=2E=2E=2E_=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plbajkomoda.xlx.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 |
|