|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre éprouvé
![]() Inscription : octobre 2002 Messages : 481 ![]() |
Bonjour,
J'ai mis en place une table pour gérer des données hiérarchiques selon la méthode du "materialized path" comme décrite ici. Pas de problème, ça marche bien... sauf pour la sélection de nœuds d'un certain niveau, qui normalement doit se faire avec (voir lien précédent, en tout bas de page): Code :
Code :
Comment faire pour limiter la sélection aux chemins (path) de niveau 2, exclusivement ? Merci |
||||
|
|
00
|
|
|
#2 | ||||||||
|
Membre éprouvé
![]() Inscription : octobre 2002 Messages : 481 ![]() |
Je me réponds tout seul, ça pourra servir à d'autres. Je n'ai pas tout testé mais d'après ce que j'ai compris, ça devrait marcher comme ça.
Quelques exemples... 1- pour sélectionner tous les chemins de niveau 2 ou plus: Code :
Code :
Code :
Code :
|
||||||||
|
|
00
|
|
|
#3 | ||
|
Membre éprouvé
![]() Inscription : octobre 2002 Messages : 481 ![]() |
Une autre solution serait de stocker la longueur du chemin dans une colonne supplémentaire !
Il suffirait alors de faire des requêtes de ce genre: Code :
|
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 955 ![]() |
Au lieu de la représentation par matérialisation du chemin qui est très couteuse en terme de mise à jour comme en volume, vous auriez mieux fait d'utiliser la représentation intervallaire très optimisée comme je le décris ici : http://sqlpro.developpez.com/cours/arborescence/
Le nombre de niveau étant facilement calculable avec une simple requête pouvant utiliser les index de la table. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() Inscription : octobre 2002 Messages : 481 ![]() |
J'avais étudié la possibilité d'utiliser cette méthode (nested sets) mais au final j'ai préféré celle des materialized paths. Je n'ai plus les liens sous la main, mais des points de vue de la simplicité des requêtes et de l'efficacité/performance, la méthode que j'ai choisie était largement gagnante dans mon cas (stockage d'urls hiérarchiques et limitées en profondeur).
Le seul problème avec les materialized paths c'est justement cette magouille avec les wildcards et LIKE parce que /%/ englobe aussi bien /123/ que /45/67/89/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com