![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 24.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
zadanie polega na zrobieniu bazy danych, w ktorej zawarte beda dane na temat węzłów drzewa pokazanego poniżej
![]() tak więc stworzyłem tabele, wzraz sekwencją i wyzwalaczem
dodałem wszytskie dane
nastepnie należy uzywajac polecenia SELECT wyswietlic scięzke od wybrane liścia drzewa do korzenia, czego kompletnie nie wiem jak zrobić, a później za pomocą procedury i kursora zaprezentować zawartość utworzonej tabeli w następujący sposób : ID = 1 nazwa węzla = Root node numer węzla = 0 węze nadrzędny = null ID = 2 nazwa węzla = CCITT numer węzla = 0.0 węze nadrzędny = 0 ID = 3 nazwa węzla = ISO numer węzla = 0.1 węze nadrzędny = 0 tak wieć zrobiłem kursor (nie wiem czy poprawnie, chociaz w tej formie się kompiluje)
i dalej nie mam pojecia jak to ugryźć, bo kompletnie nie wiem jak wziąć się za procedury każda wskazówka lub pomoc będzie mile widziana pozdrawiam z góry dzięki |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
pozwol kolego ze zapodam ci cos bardziej zaawansowanego, napewno ci sie przyda jak i innym uzytkownikom tego forum
Otoz w oracle-u mozna bardzo fajnie zbudowac drzewo po przez zapytanie sql nie uzywajac zadnych procedurów czy funkcji wylowywanych rekurencja. Tabela musi sie skadac z kolumny okreslajacej rodzica. Fajnie ze masz juz sekwencje i trigery. Oczywiscie w kolumnie okreslajacej rodzica przetrzymujemy odpowiednie ID (klucz unikalny rodzica). Jesli twoja tabela "drzewo" bedzie sie skadac z takich wartosci ID | PARENT_ID | NAZWA | ..[inne kolumny] 1 | null |Root |... 2 | 1 | ccit | ... 3 | 1 | iso | ... 4 | 1 | iso-ccit | ... 5 | 3 | Standart | ... Itd... Wystarczy ze utworzysz sobie zapytanie
jak nie zadziala zamiast d.id = d.parent_id daj na odwrot d.parent_id = d.id ![]() i tym sposobem dostajesz wyniki na tacy wraz z level-em danej gałezi liczonej od 1 - chyba ![]() oczywiscie zapytanie mozesz modyfikowac dowolnie wstawiajac klauzule where itd (normalnie po from) Dawno nie uzywalem tego zapytania wiec prosze o wyrozumialas jesli sa bledy ![]() ![]() PS mozna jeszcze to zrobic po przez indeksacje drzewa left i right... ale ja uzywam tego bo skoro oracle sam daje nam takie mozliwosci to... po co wymyslac jeszcze raz kolo? Ten post edytował wiiir 27.12.2010, 21:59:13 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.07.2025 - 20:19 |