Ankündigung

Einklappen
Keine Ankündigung bisher.

[mysql] Ablegen und Auslesen einer Hierarchie

Einklappen

Neue Werbung 2019

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

  • [mysql] Ablegen und Auslesen einer Hierarchie

    Hallo zusammen,

    ich möchte in einer MySQL-DB eine Hierarchie ablegen und auch wieder auslesen können.

    Mit der Ablage hätte ich keine Problem, dies würde ich in folgender Form lösen:

    Code:
    ID|NAME_DER_EBENE|PARENTID
    1 |Ebene1        |0
    2 |Ebene2        |1
    3 |Ebene3        |2
    Als "Pfad" ergibt sich dann "Ebene1 > Ebene2 > Ebene3". Dieser soll auch so angezeigt werden.

    Jetzt soll es aber auch möglich sein, von jeder Ebene des Pfads ausgehend, den Gesamtpfad zu ermitteln und anzuzeigen (wobei die Länge nicht unbedingt auf 3 Elemente beschränkt sein muss, kann mehr oder weniger haben).

    Zum Beispiel ist "Ebene2" ein Suchbegriff, dann soll als Ergebnis der gesamte Pfad ("Ebene1 > Ebene2 > Ebene3") angezeigt werden.

    Jetzt gibt es in der DB natürlich mehrere solcher Pfade und es kann möglich sein, dass die selbe Bezeichnung einer Ebene mehrfach vorkommt.

    Wird jetzt nach einer Ebenen-Bezeichnung gesucht, sollen als Ergebnis dann alle kompletten Pfade ausgegeben werden, in denen diese Ebenen-Bezeichnung vorkommt.

    Edit:

    Man könnte natürlich hingehen und den kompletten Pfad mit Ablegen:

    Code:
    ID|NAME_DER_EBENE|PARENTID|PFAD
    1 |Ebene1        |0       |
    2 |Ebene2        |1       |1
    3 |Ebene3        |2       |1,2
    Und das dann über ein SELECT mit WHERE IN machen.

    Grüße
    Igotcha

  • #2
    Stichwort Nested Sets
    Dafür gibt es Open Source auch nette Klassen die dich bei der Pfadermittlung usw. unterstützen.

    Kommentar


    • #3
      Zitat von aeris Beitrag anzeigen
      Stichwort Nested Sets
      Dafür gibt es Open Source auch nette Klassen die dich bei der Pfadermittlung usw. unterstützen.
      Danke Dir, scheint genau die Lösung für mein Problem zu sein.

      Bin gerade am Googlen, habe aber bisher nur eine Klasse gefunden, die man über PEAR einbindet - das muss aber unabhängig bdavon bei einem Provider laufen.

      Hast Du evtl. einen Link für mich zu so einer "netten Klasse"?

      Grüße
      Igotcha

      Kommentar


      • #4
        Ich habe z.B schon hiermit gearbeitet und es hat alles wunderbar funktioniert:
        http://codeigniter.com/wiki/Nested_sets/
        Ist speziell für das Codeigniter-Framework, es sollte aber ein Leichtes sein die Klasse "umzuschreiben".

        Für das Zendframework findest du hier eine entspr. Umsetzung:
        http://dev.iordanov.net/archives/8

        Beim Googeln hab ich auf die Schnelle noch das hier gefunden:
        http://www.phpclasses.org/package/13...-approach.html
        http://www.phpclasses.org/package/57...-database.html

        Kommentar


        • #5
          Habe eben auch noch das hier gefunden:
          http://www.edutech.ch/contribution/nstrees/index.php

          Schon etwas älter, die Funktionen scheinen aber auf den ersten Blick recht gut.

          Kommentar

          Lädt...
          X