![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 1 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witajcie, mam drzewko w bazie o strukturze:
ID | Name | Parent kopiując jakoś gałąź kopiuję ją wraz z podzakładkami i wykonuję zapytanie w stylu SELECT * FROM tabela WHERE Parent = 1 i w ten sposób pobieram wszystkie dzieci zakładki o ID 1, a jak wykonać zapytanie, żeby pobrać wszystkie dzieci dzieci, czyli wnuki zakładki o ID 1, jakaś funkcja rekurencyjny, ale jak ją zbudować, macie jakieś pomysły? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zrób sobie funkcję powiedzmy pobierz(id)
z zawartością Kod SELECT * FROM tabela WHERE Parent = id
while(są wyniki) { zmienna = pobierz id z kolejnego wyniku wywolaj pobierz(zmienna) } |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 15 Dołączył: 19.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
jesli Twoj silnik bazodanowy obsługuje CTE (Common Table Expressions) to najlepiej tego uzyc. przyklad:
MS SQL to obsluguje, MySQL niestety nie. W Oracle'u jesli dobrze pamietam mozna osiagnac to samo z uzyciem klauzuli CONNECT BY Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:15 |