Michi: Breadcrumbs aus MYSQL Datenbank heraus erstellen

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

  1. 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

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. 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

  3. Das Traumergebnis wäre, immer von einer angebebenen ID den Pad bis zum Anfang auszugeben:

    Submenu(ID3) -> Submenu(ID2) -> Main1 (ID1)

    Michi

    1. 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)

      1. 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.

      2. 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