Nested Set Rootline Prüfen

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

  • Nested Set Rootline Prüfen

    Hallo!

    Nehmen wir mal an, ich habe ein Nested Set:
    Code:
    - root
      - user
        - foo
        - bar
      - config
        - info
          - system
    Das ist jetzt einfach nur mal ein Beispiel. Wie kann ich jetzt über eine MySQL Abfrage am effektivsten überprüfen ob z.B. die Rootline "root > user > home" so ansich existiert oder nicht? Gibts da irgend nen Trick?

    Danke

  • #2
    SELECT p.*
    FROM tree n, tree p
    WHERE n.lft BETWEEN p.lft AND p.rgt AND n.name = 'home'
    ORDER BY n.lft

    liefert alle Knoten auf dem Pfad von der Wurzel zu home. Wenn du das gruppierst, kannst du mit GROUP_CONCAT() einen String zusammenbauen, den du direkt mit deinem String "root > user > home" vergleichen kannst.

    Wenn solche Abfragen öfter vorkommen, solltest du eine kleine Erweiterung in Betracht ziehen: Eine weitere Spalte, in welcher der gesamte Pfad gespeichert wird (materialized path).

    Kommentar


    • #3
      Ach mit group_concat geht das, danke Dir!

      K.a. wie oft das vorkommen wird, je nachdem wie oft es von mir (bzw. weiteren Usern) genutzt wird. An eine weitere Spalte habe ich auch schon gedacht. Nur müsste ich dann, wenn ich irgendwo was verschiebe oder entferne, sämtliche Felder aktualisieren. Da wäre ne liveabfrage dann doch von Vorteil.

      Kommentar

      Lädt...
      X