Breadcrumbs aus MYSQL Datenbank heraus erstellen
Michi
- datenbank
Ich habe mein Menü so aufgebaut
ID NAME ZUORDNUNG
1 Main1 0
2 Submenu 1
3 Submenu 2
4 Main2 0
jetzt versuche ich ein Breadcrumbs Menü daraus zu extrahieren.
SELECT b.*
FROM menu a, menu b
WHERE a.id BETWEEN b.id AND b.zuordnung
AND a.id = 3
ORDER BY a.id;
Doch leider kommt nur ein leeres Ergbniss.
Kann mir da jemand weiterhelfen?
Michael
Hi,
ID NAME ZUORDNUNG
1 Main1 0
2 Submenu 1
3 Submenu 2
4 Main2 0
WHERE a.id BETWEEN b.id AND b.zuordnung
AND a.id = 3
Doch leider kommt nur ein leeres Ergbniss.
Was soll denn sonst kommen?
3 BETWEEN b.id AND b.zuordnung trifft nun mal für keinen deiner Datensätze zu.
Bei den ersten drei ist die ID kleiner-gleich 3, aber die Zuordnung nicht größer-gleich.
MfG ChrisB
Hallo Michael,
Ich habe mein Menü so aufgebaut
ID NAME ZUORDNUNG
1 Main1 0
2 Submenu 1
3 Submenu 2
4 Main2 0
das sieht nicht besonders gut aus :-)
jetzt versuche ich ein Breadcrumbs Menü daraus zu extrahieren.
Welches Ergebnis wünschst Du denn?
[ ] den Brotkrümelpfad eines bestimmten Menüs
[ ] alle möglichen Brotkrümelpfade
[ ] etwas anderes, nämlich __________________
Kann mir da jemand weiterhelfen?
Vermutlich wird Dir ein anderes Konzept besser weiterhelfen können :-)
Zuvor solltest Du das gewünschte Ergebnis angeben, zum Beispiel genau das Ergebnis, das sich aus Deinen oben angegebenen Musterdaten ergibt - mit der dazugehörenden Begründung.
Freundliche Grüße
Vinzenz
Das Traumergebnis wäre, immer von einer angebebenen ID den Pad bis zum Anfang auszugeben:
Submenu(ID3) -> Submenu(ID2) -> Main1 (ID1)
Michi
Ja, das Wie würde ich auch gerne wissen.
Ich habe schon lange das gleiche Problem, will aber auch nicht eine neue Struktur aufbauen (wie das Nested Sets), weil eigentlich alles funktionert. Nur beim ausgeben eines einzelnen Pfades, wo alle Kinder aus diesem Pfad mit ausgegeben werden happpppert es bei mir eben auch noch.
Auch bei der Suche im Internet habe ich noch nichts gefunden, und ich habe wirklich in allen Ecken gesucht!
Conny (m)
Tach!
Ich habe schon lange das gleiche Problem, will aber auch nicht eine neue Struktur aufbauen (wie das Nested Sets), weil eigentlich alles funktionert. Nur beim ausgeben eines einzelnen Pfades, wo alle Kinder aus diesem Pfad mit ausgegeben werden happpppert es bei mir eben auch noch.
Bei solch einer Abfrage kann man (ohne Nested Sets) immer nur schrittweise vorgehen. Den ersten Wert kennt man. Den zweiten kann man daraufhin ermitteln, aber der dritte geht erst mit dem Wert vom zweiten. Und dann so weiter. Bei einer endlichen Abfragetiefe kann man das zur Not mit einer statischen geschachtelten Abfrage ermitteln. Aber für jede Tiefe ist eine eigene Abfrage notwendig und je tiefer desto mehr Schachtlungen braucht es. Die kann man zwar mit UNION zu einer Ergebnismenge zusammenfügen, aber schön sieht letztlich anders aus. Die Alternative (wieder ohne Nested Sets) ist, schrittweise Einzelabfragen an das DBMS zu stellen. Diese Aufgabe kann man auch in eine Stored Prcedure auslagern - womit man das Problem aber nur verlagert.
dedlfix.
Hallo,
Ich habe schon lange das gleiche Problem, will aber auch nicht eine neue Struktur aufbauen (wie das Nested Sets), weil eigentlich alles funktionert. Nur beim ausgeben eines einzelnen Pfades, wo alle Kinder aus diesem Pfad mit ausgegeben werden happpppert es bei mir eben auch noch.
Auch bei der Suche im Internet habe ich noch nichts gefunden, und ich habe wirklich in allen Ecken gesucht!
eine Möglichkeit - die aber *auch* nicht mit der (scheinbar) einfachen Adjazenzliste auskommt - wäre die Closure Table, siehe z.B. http://jdobbie.blogspot.com/2009/07/closure-trees.html (und Links in der interessanten Diskussion).
Freundliche Grüße
Vinzenz