Witam.
Jest sobie tabela:
GRUPY:
ID_grupy
ID_rodzica
nazwa
typ
Przykładowa struktura:
Katalog
|-Katalog1
| |-Katalog11
| | |-Plik111
| | \-Plik112
| |
| |-Katalog12
| | \-Katalog121
| | \Plik1211
| |
| |-Plik121
| |-Plik122
| \-Katalog13
| \-Katalog14
|
\-Katalog2
Zapisana będzie w tabeli następująco:
ID | =Rodzic | =Nazwa | =Typ |
---|---|---|---|
1 | 0 | Katalog | 0 |
2 | 1 | Katalog1 | 0 |
3 | 2 | Katalog11 | 0 |
4 | 3 | Plik111 | 1 |
5 | 3 | Plik112 | 1 |
6 | 2 | Katalog12 | 0 |
7 | 6 | Katalog121 | 0 |
8 | 7 | Plik1211 | 1 |
9 | 2 | Plik121 | 1 |
10 | 2 | Plik122 | 1 |
11 | 2 | Katalog13 | 1 |
12 | 1 | Katalog2 | 0 |
13 | 11 | Katalog14 | 0 |
Mam nadzieję, że ten przykład dobrze wyjaśnia o co chodzi - w jednej tabeli zapisane są informacje zarówno o katalogach, jak i o plikach. Katalogi mają Typ=0, a pliki Typ=1. Jest to jedyna tabela zawierająca te informacje. Struktura jest taka, jaka jest, i nie mam na nią wpływu - działa na tym zewnętrzna aplikacja.
Potrzebuję stworzyć zapytanie, które:
- Wybierze mi wszystkie elementy, będące elementami wybranego katalogu i wszystkich jego podkatalogów (i pod-podkatalogów etc)
- Jednocześnie pominie katalogi puste (zarówno całkiem puste, jak i zawierające jedynie puste katalogi)
Kwestia wydajności jest absolutnie drugorzędna.
Ktoś ma jakieś rozwiązanie?