Baumstruktur in MySQL Speichern

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

  • Baumstruktur in MySQL Speichern

    Hey..
    ich müßte eine Baumstruktur (wie von Explorer) mit unendlicher Tiefe und in der Datenbank festgelegten Reihenfolge speichern (also NICHT alphabetisch sortiert)

    Kennt jemand eine Lösung die nur auf Child/Parent beruht ?
    Also ohne Integer-Prioritäten auskommt..

  • #2
    Was meinst du mit Integer Prioritäten ?


    Meine Idee (nicht hauen):
    ID,PARENTID,EINTRAG,SORTIERUNG

    Dann kannst du jede Ebene einfach anzeigen.
    Willst du den kompletten Baum anzeigen, geht das wohl nur rekursiv.

    SELECT id,eintrag FROM Tabelle WHERE parentid=X ORDER BY sortierung ASC;
    Der Funktion übergibst du am Anfang X=0.
    Wenn du die Ergebnisse durchgehst, rufe für jeden Eintrag die Funktion wieder rekursiv auf mit X=ID des Eintrags.
    Werden Kinder gefunden, geht das so weiter.
    Du kannst, um die Tiefe der Anzeige zu limitieren, auch die Ebene übergeben.
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar


    • #3
      Mit Integer Priorität meinte ich bei dir die Spalte 'Sortierung'

      Das Problem ist das wir bei der Lösung doch per PhP die IDs durchgehen müssen oder gibt es da einen SQL Befehl ?

      Kommentar


      • #4
        In 'ner Guten Datenbank (Oracle) gibt's ein CONNECT BY PRIOR ... steht bei MySQL aber erst noch auf der TODO-Liste ... ( Ich denke mal ab Version 4.23.xx )

        Für MySQL gibt's nur 'ne Rekursions-Lösung ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Gibt es in Oracle auf eine automatisch generierte Prio ?
          In MySQL mußte ich alles per Hand programmieren..
          ..und da keine verschachtelten Anfragen existieren ist das nicht gerade sicher.

          Kommentar


          • #6
            Hmmm....

            Hm, ein Ansatz wäre vielleicht die Speicherung einer Pfad-ID nach dem folgenden Muster:

            0-15-90-89-99-77

            0 = root
            15 = 15. Ordner in Root
            90 = 90. Ordner im 15. Ordner
            89 = 89. Ordner im 90. Ordner

            usw...

            Dann könntest Du ganze Bäume mit einer SELECT-Anweisung abrufen:

            SELECT * FROM baumstruktur WHERE pfad LIKE "0-15-90"

            (für alle Items unterhalb des 90. Ordners im 15. Ordner...)

            Kommentar


            • #7
              Was dann aber noch nicht die Reihenfolge der Artikel in derselben Ebene klären würde.
              Und du müßtest dich um das Codieren auch in PhP kümmern.

              Die Idee aus dem PhP Magazin (Child/Parent-Relation) ist schon gut..aber für Bäume deren unterschiedliche Level nicht alphabetisch sortiert sind ungeeignet.

              Kommentar


              • #8
                Was dann aber noch nicht die Reihenfolge der Artikel in derselben Ebene klären würde.
                Und du müßtest dich um das Codieren auch in PhP kümmern.

                Die Idee aus dem PhP Magazin (Child/Parent-Relation) ist schon gut..aber für Bäume deren unterschiedliche Level nicht alphabetisch sortiert sind ungeeignet.

                Kommentar

                Lädt...
                X