Nested Sets eingrenzen?

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

  • Nested Sets eingrenzen?

    Mosche

    Ich lese derzeit die Multi Level Mitarbeiter Struktur über Nested Sets aus, um Sie als Baum darzustellen. Ist ja auch echt eine Super Sache.

    Aber, ich finde leider keinen Ansatz das ganze zu erweitern. Zum einen brauche ich manchmal nur Teile des Baums. Gefummelt habe ich reichlich. Leider ohne brauchbare Ergebnisse. Das einzige was ich hinbekommen habe, ist den Baum von oben zu kürzen. Mitten drin geht nicht?!?

    Dann müsste ich eigentlich noch eine Möglichlkeit haben festzustellen, ob Mitarbeiter X direkt oder inderekt unter Mitarbeiter Y steht. Geht das überhaupt?

    Für den Fall, dass eines / oder beides nicht geht, welche sinnvollen und perfomanten Lösungen / Ansätze gibt es sonst. Bisher habe ich sowas über "Horror Selects" gelöst. Speziell das Herausfinden, ob X unter Y steht ist ein echter Perf.-Killer
    Thx im Vorraus
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

  • #2
    wenn du nur Teile des Baumes ausgeben willst, muss du zumindest wissen, wie der Baum heisst oder wie seine IDNo ist, dann sollte doch kein Problem sein.

    Kommentar


    • #3
      dann sollte doch kein Problem sein.
      ist es aber
      Wenn es so einfach wäre, hätte ich es unter Umständen hinbekommen ...

      Ich hab zwar theorietisch alle möglcihen Daten von der Person, von welcher ich den Teilbaum auslesen möchte, aber ich weiss nicht, wie man das Select Statement ändern muss. Bzw. Ob das Überhaupt geht.

      Und dann ist da ja noch das 2. Problem ... Dafür fällt mir quasi gar nichts ein
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #4
        hängt mal die Tbl-Struktur und einen Teil der Daten von deinem NS-Tbl an.

        Das 2. Problem ist relatives Problem, was heisst unter oder über? Es kommt
        letztlich auf die Sortierung an, oder hab ich dich nicht ganz verstanden
        Zuletzt geändert von asp2php; 26.05.2004, 07:47.

        Kommentar


        • #5
          Prizipiell ist alles wie in dem TUT: http://www.php-resource.de/tutorials/read/21/1/

          Aber bitte hier die Tabelle:
          Code:
          CREATE TABLE `user` (
            `ID_user` bigint(10) unsigned NOT NULL auto_increment,
            `FKID_parentuser` bigint(20) unsigned NOT NULL default '0',
            `FKID_userdaten` bigint(20) unsigned NOT NULL default '0',
            `ID_tree` int(10) unsigned NOT NULL default '0',
            `user_name` varchar(255) default NULL,
            `user_lft` bigint(20) unsigned NOT NULL default '0',
            `user_rgt` bigint(20) unsigned NOT NULL default '0',
            PRIMARY KEY  (`ID_user`),
            KEY `root_id` (`ID_tree`)
          ) TYPE=MyISAM AUTO_INCREMENT=28 ;
          Im Gegensatz zu dem Tut sind die Felder etwas anders. das Feld user_name ist nur zum Testen drin. Später ist das ein Join auf die User-Daten.

          select:
          Code:
          SELECT user1.user_name,user1.ID_tree,user1.user_lft,user1.user_rgt,
                                 
          					   COUNT(*) AS level
          
                                 FROM user AS user1,
                                 user AS user2
           
                                 WHERE user1.ID_tree =1
                                 AND user2.ID_tree =1					   					  					
          
                                 AND user1.user_lft  BETWEEN user2.user_lft AND  user2.user_rgt 
          
                                 GROUP BY user1.user_lft
          h.a.n.d.
          Schmalle

          http://impressed.by
          http://blog.schmalenberger.it



          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
          ... nur ohne :-)

          Kommentar


          • #6
            Original geschrieben von asp2php
            Das 2. Problem ist relatives Problem, was heisst unter oder über? Es kommt
            letztlich auf die Sortierung an, oder hab ich dich nicht ganz verstanden
            ich werde es Dir mal verdeutlichen
            Code:
            Mitarbeiter Liste:
            
            Schmalle 
            - ASP
              - Berni
              - Titus
            - Mortalan
              - wahsaga
            So jetzt wills ASP die Daten von Titus sehen. Jetzt muss ich wissen, ob er das auch darf. Und er darf es nur, wenn Titus zu seinem Team gehört ... Ergebnis: er darf es. Er dürfte aber nicht die Daten von wahsaga einsehen, weil der gehört zu Morti ... u understand?
            h.a.n.d.
            Schmalle

            http://impressed.by
            http://blog.schmalenberger.it



            Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
            ... nur ohne :-)

            Kommentar


            • #7
              um den Teilbaum holen zu können, brauchst du die Info von user_lft
              und user_rgt, aber da du user_id weisst, ist ja kein Problem gell. Damit
              setzt du diese beiden Werte als Grenze in deiner Abfrage ein und wirst
              glücklich, oder?

              Kommentar


              • #8
                Original geschrieben von asp2php
                und wirstglücklich, oder?
                leider nein. Das funktioniert nicht oder nur bedingt. Ich hab es schon einmal hinbekommen, aber dann gibt es keinen Baum mehr, sondern nur noch eine Liste. Sprich alle gefundenen liegen auf einer Ebene. Bringt auch nix ...
                h.a.n.d.
                Schmalle

                http://impressed.by
                http://blog.schmalenberger.it



                Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                ... nur ohne :-)

                Kommentar


                • #9
                  Original geschrieben von schmalle
                  ... u understand?
                  Yeah, wenn du Lösung für Problem 1 hast dann erübrigt sich Problem 2
                  denn wahsaga dürfte in der Liste garnicht auftauchen, gell

                  Kommentar


                  • #10
                    Original geschrieben von asp2php
                    Yeah, wenn du Lösung für Problem 1 hast dann erübrigt sich Problem 2
                    denn wahsaga dürfte in der Liste garnicht auftauchen, gell
                    Du lernst schnell Nur für Problem 1 habe ich keine Lösung
                    h.a.n.d.
                    Schmalle

                    http://impressed.by
                    http://blog.schmalenberger.it



                    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                    ... nur ohne :-)

                    Kommentar


                    • #11
                      Oh mann, alles muss man vor machen

                      SELECT node1.payload,
                      COUNT(*) AS level

                      FROM node AS node1,
                      node AS node2

                      WHERE node1.root_id = 1
                      AND node2.root_id = 1

                      AND node1.lft BETWEEN node2.lft AND node2.rgt and node2.lft>=2 AND node2.rgt<=7

                      GROUP BY node1.LFT

                      die Daten sind gem. TUT

                      Ergebnis s. Anhang
                      Angehängte Dateien

                      Kommentar


                      • #12
                        ach schmalle, das haben wir doch schon alles fertig als source vorliegen
                        schau mal auf die CD.


                        cu
                        berni

                        php-Entwicklung | ebiz-consult.de
                        PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
                        die PHP Marktplatz-Software | ebiz-trader.de

                        Kommentar


                        • #13
                          @berni So ist der Lereffekt größer und ich beschäftige noch andere User

                          @asp DANKE!!
                          h.a.n.d.
                          Schmalle

                          http://impressed.by
                          http://blog.schmalenberger.it



                          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                          ... nur ohne :-)

                          Kommentar


                          • #14
                            Original geschrieben von schmalle
                            So ist der Lereffekt größer und ich beschäftige noch andere User

















                            Kommentar


                            • #15
                              Original geschrieben von Berni

                              schau mal auf die CD.
                              wasfür CD, will auch haben

                              Kommentar

                              Lädt...
                              X