Is iemand bekend met het Nested Set model, om een hierarchische structuur in een database op te slaan? Wat uitleg alhier: http://dev.mysql.com/tech...es/hierarchical-data.html
Ik ben bezig een systeem te maken op basis van dit principe, waarbij ik verschillende categorieën kan maken met dezelfde naam. Op zich niet zo lastig, als ze maar een andere id hebben natuurlijk, maar ik wil ze op naam kunnen selecteren (naam komt uit de URL: /categorie/subcategorie). Op zich werkt dit, maar het gaat nog stuk als ik een categorie heb met de zelfde naam als één van z'n parents.
Oplossing: check op welke diepte in de structuur ze zitten, en verwerk dat in de logica. En daar kom ik dus niet uit. Ik heb de volgende query (zie ook het artikel) om m'n pad te bepalen:
Maar daar zit de diepte niet in. Ik heb ook een query om de diepte te bepalen, maar daarin krijg je de diepte van alle categorieën, en niet alleen van je pad zoals hierboven.
Wat ik dus zoek is een soort combinatie van bovenstaande queries, die dus het pad + de diepte van iedere node oplevert. Ik krijg het echter niet voor elkaar, ik krijg óf alleen de root, óf alle categorieën, óf junk
Iemand?
Ik ben bezig een systeem te maken op basis van dit principe, waarbij ik verschillende categorieën kan maken met dezelfde naam. Op zich niet zo lastig, als ze maar een andere id hebben natuurlijk, maar ik wil ze op naam kunnen selecteren (naam komt uit de URL: /categorie/subcategorie). Op zich werkt dit, maar het gaat nog stuk als ik een categorie heb met de zelfde naam als één van z'n parents.
Oplossing: check op welke diepte in de structuur ze zitten, en verwerk dat in de logica. En daar kom ik dus niet uit. Ik heb de volgende query (zie ook het artikel) om m'n pad te bepalen:
code:
1
2
3
4
5
6
| SELECT parent.name FROM nested_category AS node, nested_category AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.name = 'FLASH' ORDER BY parent.lft; |
Maar daar zit de diepte niet in. Ik heb ook een query om de diepte te bepalen, maar daarin krijg je de diepte van alle categorieën, en niet alleen van je pad zoals hierboven.
code:
1
2
3
4
5
6
| SELECT node.name, (COUNT(parent.name) - 1) AS depth FROM nested_category AS node, nested_category AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.name ORDER BY node.lft; |
Wat ik dus zoek is een soort combinatie van bovenstaande queries, die dus het pad + de diepte van iedere node oplevert. Ik krijg het echter niet voor elkaar, ik krijg óf alleen de root, óf alle categorieën, óf junk
Iemand?
Designer | Developer | Director | Photographer | LARPer | Geek | Male | 39