Strona 1 z 1

Base i stuktura drzewiasta.

PostNapisane: Pn gru 09, 2019 10:10 am
przez szczur3k
W tabeli mam takie dane:

Kod: Zaznacz cały   Rozszerz widokZwiń widok
+-------+-------------------+-----------+
| Id    | Name              | Parent    |
+-------+-------------------+-----------+
| 1     | Kategoria 1       | 0         |
+-------+-------------------+-----------+
| 2     | Kategoria 2       | 0         |
+-------+-------------------+-----------+
| 3     | Kategoria 1-1     | 1         |
+-------+-------------------+-----------+
| 4     | Kategoria 1-2     | 1         |
+-------+-------------------+-----------+
| 5     | Kategoria 2-1     | 2         |
+-------+-------------------+-----------+
| 6     | Kategoria 1-2-1   | 4         |
+-------+-------------------+-----------+
| 7     | Kategoria 2-1     | 5         |
+-------+-------------------+-----------+
| 8     | Kategoria 2-2     | 2         |
+-------+-------------------+-----------+


I potrzebuję je w formularzu przedstawić jako:

Kategoria 1
Kategoria 1 -> Kategoria 1-1
Kategoria 1 -> Kategoria 1-1 -> Kategoria 1-2-1
Kategoria 1 -> Kategoria 1-2
Kategoria 2
Kategoria 2 -> Kategoria 2-1
Kategoria 2 -> Kategoria 2-1 -> Kategoria 2-1-1
Kategoria 2 -> Kategoria 2-2

Czyli takie klasyczne drzewko. Da się to w ogóle zrobić w BASE czy jednak to już lekka przesada?

Re: Base i stuktura drzewiasta.

PostNapisane: Pn gru 09, 2019 1:38 pm
przez Jan_J
Jeżeli wysokość drzewa jest znana, można zbudować wielokrotny LEFT JOIN z kryterium postaci lewy.id = prawy.parent na każdym poziomie łączenia.
Struktury rekurencyjne w SQL znam zbyt słabo, by z pamięci zaproponować rozwiązanie ogólne.

Podpowiedź ze StackOverflow: https://stackoverflow.com/questions/175 ... -self-join, być może jest to dobry punkt wyjścia.

See also https://en.wikipedia.org/wiki/Hierarchi ... expression

Sam Base ma tu mniejsze znaczenie. Najwięcej zależy od wersji języka rozumianego przez system zarządzający bazą.