hierarchische Daten abfragen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • hierarchische Daten abfragen

    Hallo,

    meine Tabelle hat folgenden Aufbau:

    Code:
    id | name  | image  | parent_id
    1  | xx    |   xxx  |    0
    2  | xx    |   NULL |    1
    3  | xx    |   NULL |    2
    Die Spalte image ist nur gefüllt, wenn parent_id = 0 ist, also auf oberster Ebene. Auf den unteren Ebenen soll das Bild aus der obersten Ebene verwendet werden.
    Gibt es eine Abfrage, mit der man (egal auf welcher Unterebene man sich befindet) das Bild der obersten Ebene bekommt?

    Mit dieser Abfrage klappt es für die 3. Ebene, aber ich brauchte es dynamisch, also egal auf welcher Ebene man ist.
    Code:
    select t1.name,t2.name,t3.name from table t1
    inner join table t2 on t1.id = t2.parent_id
    inner join table t3 on t2.id = t3.parent_id
    Zuletzt geändert von lx-club; 10.06.2013, 00:09.

  • #2
    Eine elegante Lösung für genau das Teilproblem für dieses Schema (Adjazenzliste) weiß ich spontan nicht.

    Aber vielleicht mal im Kontext überlegt: Liest du nicht an anderer Stelle sowieso aus irgendeinem Grund die gesamte Baumstruktur vom aktiven Element bis zum Root-Element aus?

    Ansonsten könntest du wohl Nested Sets nutzen (auch ungeachtet dieses speziellen Problems keine schlechte Idee). Damit wärst du die Notwendigkeit zur Rekursion los.

    - https://de.wikipedia.org/wiki/Nested_Sets

    Naiv gesagt: Du kannst es auch mit rekursiven Queries in PHP lösen. Elegant ist dann zwar wirklich anders, aber ich schätze es als ganz realistisch ein, dass das nicht der Aspekt sein wird, der sich am schlimmsten auf die Performance auswirken wird.
    Zuletzt geändert von mermshaus; 10.06.2013, 00:47.

    Kommentar


    • #3
      Hi,

      also die Baumstruktur habe ich tatsächlich ausgelesen, aber nicht die gesamt, sondern nur den Teil, der in der Navigation zu sehen ist.

      Dein Tip mit dem einlesen der gesamten Struktur habei hc erstmal umgesetzt. Ich setze das Bild in jeder Ebene nur, wenn es nicht leer ist. Ansonsten wird das Bild der vorherigen Ebene (also des vorherigen Duchlaufs) genommen.

      Kommentar


      • #4
        Ist mit einem Adjacency Tree nicht ganz einfach

        Yaslaw.Info: [MySQL] Hierarchie Baum (Adjacency Tree) auslesen
        item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)

        Kommentar


        • #5
          Danke für den Hinweis, werde ich mir mal ansehen.

          Kommentar

          Lädt...
          X