Lista jednokierunkowa w bazie danych

0

Przyjmijmy, że mamy tabelę w postaci listy jednokierunkowej: 2 interesujące nas pola to id i next.
w polu next są id-ki kolejnych elementów listy. Czy istnieje jakiś szybki sposób na pobranie całej listy w prawidłowej kolejności? Tzn szybki w sensie na poziomie samego SQL-a, a nie pobieranie pojedynczo każdego rekordu.

0

jaka baza??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

0

Relacyjna... W zasadzie nie ma znaczenia. Najlepiej jakby rozwiązanie było w miarę uniwersalne. Jeżeli tak się nie da to może być dla MySQL, PostreSQL, MSSQL.

0

właśnie, że ma i to duże. Standard SQL nie przewiduje nic takiego. Możesz napisać sobie funkcję, która Ci to zwróci. Dodatkowo Oracle ma coś takiego. To jest do drzewek, ale tutaj spokojnie da radę

0

jesli dobrze zrozumialem to ty chcesz drzewo, a nie liste
jesli tak to poszukaj jak trzymac struktury hierarchiczne w bazie, a czego dokladnie szukac? ja trafilem na dwa sposoby, ktore zapewniaja szybkie wybranie poddrzewa od jakiegos noda oraz sciezki od jakiegos noda do root

  1. wprowadzamy dwa dodatkowe pola (zwyczajowo nazywane Left i Right lub Lt i Rt) typu int
    dla kazdego noda liczymy wartosci Lt i Rt, jak? na przykladzie

        0-15 
    

    1-6 7-14
    2-3 4-5 8-11 12-13
    9-10
    mam nadzieje ze widac strukture drzewiasta
    i teraz chcesz dla noda 7-14 wybrac poddrzewo? wybierasz nody o Lt>7 i Rt<14

zreszta znalazlem artykul jakis o tym http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

generalnie sposob ten jest dosc fajny i nie bardzo kosztowny jesli chodzi o pamiec, tylko przebudowa drzewa troche kosztuje
2) inny sposob, to trzymac nastepnik-poprzednik-głebokość
A
B E
C D F G
H
A-A-0 (czasem moze sie przydac, ale trzymanie glebokosci 0 nie jest potrzebne)
A-B-1
A-E-1
A-C-2
A-D-2
A-F-2
A-G-2
A-H-3
B-C-1
B-D-1
E-F-1
E-G-1
E-H-2
F-H-1

wymaga dodatkowej tabelki, ktora szybko puchnie

stosowalem oba rozwiazania i selekty to bylo marzenie
operacje IUD to juz zalezy
a dla wariantu 1) budowanie drzewa od podstaw na MS SQL 2005 dla drzewa zlozonego z (chyba) ok. 5000 rekordow trwalo kolo 30-60s, juz nie pmietam dokladnie, ale podkreslam budowa drzewa od nowa

ja raczej polecam rozwiazanie 1)

1 użytkowników online, w tym zalogowanych: 0, gości: 1