ďťż
 
zapytnie do struktury drzewa w oraclu ďťż
 
zapytnie do struktury drzewa w oraclu
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

zapytnie do struktury drzewa w oraclu



pstachy - 13-03-2006 11:26
zapytnie do struktury drzewa w oraclu
  Witam,
Mam takie dwie tabele (zdaje mi sie ze zbudowane zgodnie z metoda 5 z
FAQ)

SPOLKI DRZEWOSPOLEK
.-|----------------------------||--<firstid
id-|----------------------------||--<secondid
nazwa depth
typ
....

Moje pytanie: czy mozliwe jest stworzenie widoku w jakis zreczny
sposób wyswietlajacego strukture drzewa
Jak narazie to wpadlem tylko na cos takiego

CREATE OR REPLACE FORCE VIEW "WID" ("spolka", "spolka podrzedna") AS

SELECT s1.nazwa as "spolka", s2.nazwa as "spolka podrzedna"
FROM spolki s1, spolki s2, drzewospolek dr
WHERE
s1.idspolki=firstid AND s2.idspolki=secondid AND
s1.nazwa='nazwa_spólki' AND dr.depth=1

wyswietla nazwy spólek bezposrednio podrzednych w koumnie "spolka
podrzedna" a w "spolka" wyswietla nazwe nadrzednej spolki...

czy ktos spotkal sie z podobnym problemem??





=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 13-03-2006 11:26

  "pstachy" <pstachy@gmail.com> wrote:
> czy ktos spotkal sie z podobnym problemem??

Trudno powiedzieć, bo pytanie jest bardzo nieprecyzyjne.
Generalnie problemy z hierarchicznością danych rozwiązuje
się przez CONNECT BY. Na przykład:

SQL> create table spolki (
2 id number primary key,
3 nazwa varchar2(256),
4 parent number references spolki(id)
5 );

Table created.

SQL> insert into spolki values (1, 'FIRMA1', null);

1 row created.

SQL> insert into spolki values (2, 'FIRMA2', null);

1 row created.

SQL> insert into spolki values (3, 'FIRMA3', 2);

1 row created.

SQL> insert into spolki values (4, 'FIRMA4', 2);

1 row created.

SQL> insert into spolki values (5, 'FIRMA5', 4);

1 row created.

SQL> column nazwa format a30
SQL> select lpad(' ',level*2,' ')||nazwa nazwa, id, parent
2 from spolki connect by prior id = parent start with parent is null;

NAZWA ID PARENT
------------------------------ ---------- ----------
FIRMA1 1
FIRMA2 2
FIRMA3 3 2
FIRMA4 4 2
FIRMA5 5 4

--
Michał Kuratczyk




pstachy - 13-03-2006 11:26

  No wlasnie o cos takiego by mi chodzilo...ale twój przyklad
prechowuje strukture drzewa tylko w jednej tabeli przy pomocy pola
parent w relacji z id (jesli dobrze zrozumialem:) a w moim sa dwie
tabele tak jak w metodzie 5 z faq,
wobec tego czy mozna connect by zastosowac do takiego modelu danych
jesli tak to prosze o przyklad:)
po drugie jak jest z wydajnoscia Twojego rozwiazania (i samego
connect by), bo z moich informacji (zaczerpnietych z tej grupy z
reszta:) wynika ze to rozwiazanie z metoda 5 jest naljepsza i
najszybsza mimo nadmiarowosci informacji jakiej potrzebuje...
pozdrawiam




=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 13-03-2006 11:26

  "pstachy" <pstachy@gmail.com> wrote:
> No wlasnie o cos takiego by mi chodzilo...ale twój przyklad
> prechowuje strukture drzewa tylko w jednej tabeli przy pomocy pola
> parent w relacji z id (jesli dobrze zrozumialem:) a w moim sa dwie
> tabele
Tak.

> tak jak w metodzie 5 z faq,
To mi nic nie mówi. Dokładny URL, albo cytat poproszę.

> wobec tego czy mozna connect by zastosowac do takiego modelu danych
Ja bym raczej naprawił model danych. :->

> po drugie jak jest z wydajnoscia Twojego rozwiazania (i samego
> connect by), bo z moich informacji (zaczerpnietych z tej grupy z
> reszta:) wynika ze to rozwiazanie z metoda 5 jest naljepsza i
> najszybsza mimo nadmiarowosci informacji jakiej potrzebuje...
Wątpię, żeby wydajność CONNECT BY jakoś Ci doskwierała specjalnie.
Jeśli operujesz na dużych ilościach danych, to po prostu zrób na dwa
sposoby i sprawdź co jest lepsze oraz czy różnica jest warta zachodu.
Jeśli nie, to nie zawracaj sobie głowy na wyrost. Jeśli chcesz, żeby
ktoś na grupie Ci pomógł, to musiałbyś podać konkretny przykład, który
działa Ci za wolno - wtedy pomyślimy nad rozwiązaniem problemu.

--
Michał Kuratczyk





pstachy - 13-03-2006 11:26

  >To mi nic nie mówi. Dokładny URL, albo cytat poproszę.

chodzi o to że u mnie jest tak:
spolki -> przechowuja dane,
drzewospolek->przechowuje strukturę drzewa

SPOLKI DRZEWOSPOLEK
.--|----------------------------||--<firstid
id--|----------------------------||--<secondid
nazwa depth
typ

>Ja bym raczej naprawił model danych. :->

Czyli mam rozumieć że lepiej jednak zrobić to tak jak proponowałeś
wcześniej?:

create table spolki (
2 id number primary key,
3 nazwa varchar2(256),
4 parent number references spolki(id)
5 );

>Wątpię, żeby wydajność CONNECT BY jakoś Ci doskwierała specjalnie....

okej, w sumie wydajność nie jest dla mnie taka ważna tak tylko
pytałem z ciekawości.




=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 13-03-2006 11:26

  "pstachy" <pstachy@gmail.com> wrote:
> >Ja bym raczej naprawił model danych. :->
> Czyli mam rozumieć że lepiej jednak zrobić to tak jak proponowałeś
> wcześniej?:
Ja bym tak zrobił. CONNECT BY to narzędzie jak każde inne - do wielu
rzeczy nadaje się świetnie, a do wielu się nie nadaje. Unikanie go "bo
ktoś gdzieś powiedział, że jest kiepskie", to zły pomysł. Jeśli nie
spełni Twoich oczekiwań, to wtedy się będziesz zastanawiał co z tym
zrobić.

Co oczywiście nie oznacza, że o wydajności należy myśleć dopiero,
gdy serwer z bazą danych zacznie się pocić z wysiłku. ;-)

--
Michał Kuratczyk




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 13-03-2006 11:26

  pstachy wrote:
> No wlasnie o cos takiego by mi chodzilo...

To czemu go nie zastosujesz? Przecież masz wszystko co potrzeba

> ale twój przyklad
> prechowuje strukture drzewa tylko w jednej tabeli przy pomocy pola
> parent w relacji z id (jesli dobrze zrozumialem:) a w moim sa dwie
> tabele tak jak w metodzie 5 z faq,
> wobec tego czy mozna connect by zastosowac do takiego modelu danych
> jesli tak to prosze o przyklad:)
> po drugie jak jest z wydajnoscia Twojego rozwiazania (i samego
> connect by), bo z moich informacji (zaczerpnietych z tej grupy z
> reszta:) wynika ze to rozwiazanie z metoda 5 jest naljepsza i
> najszybsza mimo nadmiarowosci informacji jakiej potrzebuje...

Pewnie jako metoda rekurencyjna nie jest rewelacyjna, ale przynajmniej
baza zajmuje się optymalizacją tego.
Natomiast rozwiązanie z connect by jest napewno szybsze a i łatwiejsze
w implementacji przy wszelkich maniuplacjach na nim.

--
P.M.




pstachy - 13-03-2006 11:26

  Wielkie dzieki za wskazanie wlasciwego rozwiazania:)
No cóz biore sie za przebudowe modelu danych:)
pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    =?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?= =?ISO-8859-2?Q?=5Bmysql=5D_synchronizacja_struktury_bazy_?==? ISO-8859-2?Q?lokalnej_ze_zdaln=B1?= [postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?= [oracle] [xml] XML na bazie istniejacej struktury ? =?iso-8859-2?q?PG_Admin_-_wszyscy_widz=B1_struktur=EA...?= =?iso-8859-2?q?rozk=B3ad_autobusow_-_optymalna_struktura_bazy?= =?ISO-8859-2?Q?[MSSQL]Wy=B6wietlenie_struktury_bazy_danych.?= mysql / drzewa / produkty jak to =?ISO-8859-2?Q?zrobi=E6_jedny?==?ISO-8859-2?Q?m_zapytaniem=3F?= dane, struktura drzewiasta, =?ISO-8859-2?Q?=B3adna_prezentacja?= [sybase] Jak w sprawdzić strukturę obiektu (tabeli) w Interactive SQL ???
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • czterowers.keep.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