Toon posts:

[PHP+MySQL] Hiërarchische structuur

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe kan ik het beste een hiërarchische structuur creëren?

Stel, ik heb de volgende tabel:
code:
1
2
3
4
5
6
7
8
9
10
-----------------------
example_id   parrent_id
-----------------------
vb1          0
vb2          vb1
vb3          vb2
nee1         blaat
ja8          vb2
nee3         blaat
-----------------------
Met 1 query gefocussed op example_id = 'vb1', wil ik een result set krijgen van 'vb1' + 'vb2' + 'vb3' + 'ja8'...

Hoe kan ik dit het efficiënst voor elkaar krijgen? Het moet oneindig hiërarchisch kunnen worden, zonder merkbaar performanceverlies. Een loop totdat alle parrent_id's gevonden zijn en die uitvoeren is dus niet te doen. Wanneer de database zeg maar 10.000 records bevat en bijvoorbeeld 100 levels diep gaat, zou dat veel te lang duren.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:45

gorgi_19

Kruimeltjes zijn weer op :9

afgezien dat parent met 1 r is, heb je al gekeken in de search ?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op donderdag 09 december 2004 @ 17:20:
afgezien dat parent met 1 r is, heb je al gekeken in de search ?
Ja: "boomstructuur" schijnt het te heten wat ik wil. Een goede oplossing kan ik via die weg echter ook niet vinden :'(

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 18:05
Zoek eens op celko+tree dan vind je wel wat voorbeeldjes denk ik.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:45

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op donderdag 09 december 2004 @ 17:23:
[...]

Ja: "boomstructuur" schijnt het te heten wat ik wil. Een goede oplossing kan ik via die weg echter ook niet vinden :'(
En klik eens op de search link van mij; zoekwoorden zijn er bij ingesloten :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022

Reveller

Hopla!

Weer maar eens: Modified Preorder Tree Traversal. Dan kun je met 1 query elke willekeurige boom ophalen. Het artikel is niet volledig, maar met wat puzzelen lukt het best om alle delete en verplaats functies uit te werken. De methode lijkt moeilijker dan hij is. Wel briljant gevonden (oorspronkelijk van Celko, toch?) overigens.

Misschien een idee overigens om deze link in de FAQ te zetten, samen met een stukje over "hoe sla ik hierarchische data op?":

- Adjacency List (child - parent relatie, parent_id = 1)
- Modified Preorder Tree Traversal (left en right values, bv. left 2 en right 5)
- Celko Tree (path values, bv. 1.12.543)
- ...?

[ Voor 59% gewijzigd door Reveller op 09-12-2004 17:42 ]

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."

Pagina: 1