ďťż
 
oracle - zapytanie hierarchiczne ďťż
 
oracle - zapytanie hierarchiczne
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • bajkomoda.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com