Had bij mijn vorige post per ongeluk al op enter gedrukt en toen ik het gewijzigde bericht wilde posten was de topic al gesloten. 
Bij deze nogmaals mijn probleem:
Ik ben bezig met het zo optimaal mogelijk uitlezen van een boom structuur uit een mysql tabel.
Met behulp van de volgende query
Het resultaat van deze query is een lijst met alle 'nodes' vanaf een bepaalde node (hier bv met id nr 64) met daarbij het niveau als 'node_level' (het resultaat van de COUNT())
Wat ik nu doe is in PHP filteren op een bepaald node_level dat is natuurlijk ranzig, maar de andere optie is het gebruiken van een verschrikkelijk trage JOIN Query.
Mijn vraag is dus is het op een of andere manier mogelijk om de waarde van COUNT() te gebruiken in de WHERE clause? dat zou nl hetzelfde resultaat op kunnen leveren lijkt me.
Bij deze nogmaals mijn probleem:
Ik ben bezig met het zo optimaal mogelijk uitlezen van een boom structuur uit een mysql tabel.
Met behulp van de volgende query
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| SELECT N1.node_id ,N1.node_properties_id ,N1.node_name ,N1.node_title ,N1.node_type ,COUNT(N2.node_id) AS node_level FROM nodes AS N1 JOIN nodes AS N2 ON N1.node_lft BETWEEN N2.node_lft AND N2.node_rgt JOIN nodes AS N3 ON N3.node_id = '64' WHERE N1.node_lft BETWEEN (N3.node_lft + 1) AND (N3.node_rgt - 1) GROUP BY N1.node_id ORDER BY N1.node_lft |
Het resultaat van deze query is een lijst met alle 'nodes' vanaf een bepaalde node (hier bv met id nr 64) met daarbij het niveau als 'node_level' (het resultaat van de COUNT())
Wat ik nu doe is in PHP filteren op een bepaald node_level dat is natuurlijk ranzig, maar de andere optie is het gebruiken van een verschrikkelijk trage JOIN Query.
Mijn vraag is dus is het op een of andere manier mogelijk om de waarde van COUNT() te gebruiken in de WHERE clause? dat zou nl hetzelfde resultaat op kunnen leveren lijkt me.
WinXP@P4-2,4 GHz+ Zalman 7000 cooler | ASUS P4PE | 1024MB DDR-RAM | 40 GB + 120 GB Seagate HD's | 2x Samsung 172T@Matrox G550+SiS 8 Mb PCI | RME Multiface