Hallo,
ich habe ein Problem, das ich nicht wirklich nachvollziehen kann.
Mit folgender Abfrage erhalte ich einen ganzen Baum inkl. des Levels:
(tmp.lft+1, da ich den obersten Vater an sich nicht benötige)
Nun benötige ich im Prinzip dasselbe Ergebnis, jedoch erst ab einem bestimmten Vater. Angenommen ich möchte aus folgender Struktur
alle Kinder des (Ur)Vaters 1. Also erweitere ich die Bedingung und sage, tmp.id muss 1 sein:
In diesem Fall erhalte ich zwar als Resultat die richtigen Zeilen, jedoch stimmt die Level-Angabe nicht mehr. Nun hat nämlich auch 1.2.1 den Level 1, obwohl es Level 2 sein müsste.
Ich komme nicht dahinter, woran das liegt. Er fragt ja immerhin trotzdem alle Zeilen ab und berücksichtigt sie, sofern die Zeilen aus der ersten Tabelle (m) der zweiten (tmp) bei dessen id=1 zugeordnet werden können. Warum ist also das Zählergebnis von COUNT inkorrekt?
Schöne Grüße,
pb
ich habe ein Problem, das ich nicht wirklich nachvollziehen kann.
Mit folgender Abfrage erhalte ich einen ganzen Baum inkl. des Levels:
Code:
SELECT m.id, m.bez, COUNT(*) AS level FROM menue m, menue tmp WHERE m.lft BETWEEN tmp.lft+1 AND tmp.rgt AND m.aktiv='1' GROUP BY m.lft ORDER BY m.lft
Nun benötige ich im Prinzip dasselbe Ergebnis, jedoch erst ab einem bestimmten Vater. Angenommen ich möchte aus folgender Struktur
Code:
1 |-1.1 |-1.2 |-1.2.1 |-1.2.2 |-1.3 2 |-2.1 |-2.2
Code:
... WHERE m.lft BETWEEN tmp.lft+1 AND tmp.rgt AND m.aktiv='1' AND [COLOR=red]tmp.id=1[/COLOR] GROUP BY ...
Ich komme nicht dahinter, woran das liegt. Er fragt ja immerhin trotzdem alle Zeilen ab und berücksichtigt sie, sofern die Zeilen aus der ersten Tabelle (m) der zweiten (tmp) bei dessen id=1 zugeordnet werden können. Warum ist also das Zählergebnis von COUNT inkorrekt?
Schöne Grüße,
pb
Kommentar