Base i stuktura drzewiasta.

Użytkowanie programu bazodanowego

Base i stuktura drzewiasta.

Postprzez szczur3k » Pn gru 09, 2019 10:10 am

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?
Windows 10 (x64), Libre Office 6.2.7.1 (x86)
szczur3k
 
Posty: 9
Dołączył(a): Pt paź 11, 2019 12:14 pm

Re: Base i stuktura drzewiasta.

Postprzez Jan_J » Pn gru 09, 2019 1:38 pm

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ą.
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python (3.8|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4035
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław


Powrót do Base

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości