J'ai une table qui contient des chemins de dossiers. J'ai besoin de trouver tous les "trous" entre ces dossiers dans la hiérarchie. Je veux dire que, si la table contient ces 3 dossiers:SQL: Recherche des dossiers de hiérarchie manquants (chemins) dans une table
'A'
'A\B\C'
'A\B\C\D\E\F\G'
Je dois trouver les dossiers manquants suivants dans la hiérarchie:
'A\B'
'A\B\C\D'
'A\B\C\D\E'
'A\B\C\D\E\F'
Ce tableau contient plus de 250 000 enregistrements des dossiers , donc nous cherchons le moyen le plus efficace, sinon le script sera bloqué pendant longtemps, temps que nous n'avons pas.
Commentaire: Je n'ai pas la liste de tous les dossiers. Ce que j'ai sont les dossiers "root" et les dossiers "leafs" dont j'ai besoin pour trouver les "trous" entre eux dans la hiérarchie.
Deuxième commentaire: La boîte de table contient plus d'une hiérarchie et nous avons besoin de trouver les « lacunes » dans toutes les hiérarchies. D'ailleurs, il existe 2 colonnes int: "DirID" et "BaseDirID". La colonne "DirID" est la colonne id dans notre tableau. Le "BaseDirID" contient l'ID du premier dossier dans la hiérarchie. Ainsi, tous les dossiers (chemins) de la même hiérarchie partagent la même valeur dans cette colonne. Les données d'échantillon par exemple:
DirID BaseDirID DisplayPath
1 1 'A'
2 1 'A\B\C'
3 1 'A\B\C\D\E'
4 4 'U'
5 4 'U\V\W'
6 4 'U\V\W\X\Y'
Nous avons donc besoin de trouver les données suivantes:
BaseDirID DisplayPath
1 'A\B'
1 'A\B\C\D'
4 'U\V'
4 'U\V\W\X'
Merci à l'avance.
Ceci est quelque chose que je ferais en dehors de sql. tout langage de programmation fera probablement un meilleur travail que t-sql dans ce cas. –