1Fermer3
ZephLe 10/03/2016 à 19:59
Alors deux suggestions :

- Oublie l'idée de "doss_chemin" avec les identifiants les uns à la suite des autres : c'est inexploitable en SQL et ça ne te permettra de mettre aucune contrainte de cohésion dans ta base. De façon générale, je te conseillerais de ne jamais essayer de faire rentrer des trucs complexes dans un champ "varchar" ou équivalent s'ils peuvent avoir une signification SQL (par exemple être un identifiant, auquel tu pourrais ajouter un index, ou au moins l'utiliser tel quel dans une requête)
- Je ne vois pas trop non plus à quoi sert "doss_profondeur", mais peut-être que c'est un cas d'utilisation dont tu as besoin

Pour ta requête, si la rapidité d'exécution est un critère important pour toi alors il va falloir faire au moins un sacrifice : limiter la profondeur maximum de l'arbre. Ça te permettra d'écrire une requête de ce genre :SELECT d1.doss_nom AS dossier1, d2.doss_nom AS dossier2, d3.doss_nom AS dossier3 -- etc, autant de dN que tu veux de niveaux de profondeur au maximum FROM dossiers AS d1 LEFT JOIN dossiers AS d2 ON d2.doss_parent = d1.doss_num LEFT JOIN dossiers AS d3 ON d3.doss_parent = d2.doss_num -- etc, cf. commentaire ci-dessus WHERE d1.doss_nom = 'Aramis'Si tu veux une requête récursive pour avoir autant de niveaux que tu le souhaites il y a peut-être moyen, mais ça devient plus compliqué. Cf. cette question Stack Overflow par exemple.