Hello,
ich habe hier gestern schon gepostet zu dem gleichen Thema, mit diesen Nested-Set-Muster komme ich irgendwie nicht klar bzw. übersteigts meine Fähigkeiten. Mein Ziel ist es, ein Menü mit Baumstruktur auszugeben.
Nach etwas längerer Überlegung habe ich mir einen neuen Lösungsansatz ausgedacht, der in etwa so aussieht:
Ich habe eine Datenbank mit 2 Tabellen
oberkategorie (tabelle1)
ID name
1 Sport
2 Auto
3 Essenunterkategorie (tabelle2)
ID name oberkategorieID
1 Fußball 1
2 Baseball 1
3 BMW 2
4 Audi 2
5 Mercedes 2
6 Fastfood 3
7 Vegetarisch 3Wie man erkennt, sollen die aus Tabelle2 eingetragenen Werte anhand der oberkategorieID (welche der ID von Tabelle1 entspricht) zugeordnet werden.
Danach möchte ich die Datensätze mit einem row-> in einer Tabelle ausgeben. Das sollte funktionieren, oder?
Das ist ein klassischer Gruppenwechsel.
Da scheiden sich die Geister wieder, ob man eine oder zwei DB-Abfragen durchführen soll, wenn man sowieso eine API (PHP) mit der Darstellung beauftragt.
In einer Abfrage wäre es ein Join, den Du benötigt, um die Ergebnismenge zu bekommen. Den hat Dir Ekki schon gepostet https://forum.selfhtml.org/?t=198503&m=1333270
Da er die Ergebnismenge gleich nach Oberkategorie/Unterkategorie hat sortieren lassen, stehen die Ergebnisse bereits in einer brauchbaren Reihenfolge in der Ergebnisliste.
Diese musst Du nun nur noch mittels einer Schleife abholen und nach der Methode "Gruppenwechsel" (siehe Google) in HTML verpacken.
Die andere Lösung wäre, erst die Gruppen abzuholen und sich zusammen mit ihrer ID in einem Array zu merken und dann die Detaildatensätze abzuholen.
Bei der Ausgaben erstezt man dann in der Darstellungs-API die Gruppen-IDs der Detaildatensätze gegen ihre Bedeutungen.
Diese Vorgehensweise ist immer dann interessant, wenn es sich um größere Datenmengen handelt. Die beiden getrennt geholten Ergebnismengen ergeben i.d.R. zusammen weniger Datenstrom, als wenn Du sie gleich vom DBMS zu einer Ergebnismenge zusammenbauen lässt.
Es ist dabei aber zu beachten, dass die beiden Einzelabfragen gebunden werden müssen, wenn die Integrität der (abgeholten) Daten wichtig ist.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg