aztcaLISS
Messages postés91Date d'inscriptionsamedi 3 mai 2003StatutMembreDernière intervention25 avril 2008
-
14 juin 2007 à 15:31
aztcaLISS
Messages postés91Date d'inscriptionsamedi 3 mai 2003StatutMembreDernière intervention25 avril 2008
-
18 juin 2007 à 21:40
Salut,
Je travail avec ms access 2003.
J'ai une table nommé "Groups".
Elle contient 2 colonnes: Group(nom du groupe) et Path(Chemin dont un groupe a des droits).
Voici un example:
-------------------------------------
Group Path
----- ----
Grp1 C:\folder1\
Grp1 C:\folder2\
Grp1 C:\folder2\Test\sub\
Grp1 C:\folder2\sub\
Grp1 D:\
Grp2 C:\folder1\
Grp2 C:\folder1\sub\
-------------------------------------
Grp1 et Grp2 ont donc des droits sur les dossier montré ci-haut.
Ce que je veux faire, c'est une requete qui sort tous les chemins parents des diffrerents groupes.
Par example, le chemin "C:\folder2" de "Grp1" est parent de "C:\folder2\Test\sub" et de "C:\folder2\sub".
la reponse de cette requete serait donc:
-------------------------------------
Group Path
----- ----
Grp1 C:\folder1\
Grp1 C:\folder2\
Grp1 D:\
Grp2 C:\folder1\
-------------------------------------
dominique.stock
Messages postés436Date d'inscriptionvendredi 7 novembre 2003StatutMembreDernière intervention 8 octobre 20087 14 juin 2007 à 16:43
Bonjour ,
tu fais :
Select * from groups where path like 'C:\%' and path<>'C:\'
et tu auras tous les enfants de c:\
C'est du sqlserver , adaptes le en access ....
aztcaLISS
Messages postés91Date d'inscriptionsamedi 3 mai 2003StatutMembreDernière intervention25 avril 2008 14 juin 2007 à 17:14
Ca ne peut pas fonctionner car le chemin parent n'est pas obligatoirement "c:".
Comme dans l'exemple que j'ai mis, le "Grp1" n'a pas directement de droit sur le le "c:".
Il a acces a "C:\folder2" mais non directement a "C:".
"C:\folder2" est donc le parent de n'importe quel chemin en dessous de lui.
Par example le "C:\folder2\Test\sub" et le "C:\folder2\sub" sont des chemins enfants de "C:\folder2"
De plus, "C:\folder1" et " D:" sont tous les 2 des chemins parents car ils ne contiennent aucun enfant et ceci pour le "Grp1".
Je pense qu'il faut faire un GROUP BY sur la colonne "Group" pour grouper nos groupes ensemble. De plus, un GROUP BY sur la colonne "path" pour grouper les paths similaire mais ceci avec une restriction qui empeche que "C:\folder2\sub" soit visible car "C:\folder2" existe deja.
lofo18
Messages postés30Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention29 septembre 2010 18 juin 2007 à 13:16
Salut
je sais pas si ça peut t'aider, mais c'est peut etre un élement de réponse
Renvoi tous les parents ayant un enfant dans la colone path: SELECT G1.Group, G1.Path
FROM Groups as G1, Groups as G2
WHERE G2.path LIKE G1.path + '?*'
GROUP BY G1.Group, G1.Path
Recupére tous les enfants, donc après ça, il ne te reste plus qua faire un NOT EXISTS pour récupérer tous les autres (donc les parents):
SELECT G1.Group, G1.Path
FROM Groups as G1, Groups as G2
WHERE G1.path LIKE G2.path + '?*'
GROUP BY G1.Group, G1.path
je ne suis pas sur que ce soit sans faille, mais j'espère que ça t'aidera
Par contre, pour moi D:\ n'est pas considéré comme un parent, car il na pas d'enfant.
il sera parent si tu as un tuple dans ta table du genre :
-------------------------------------
Group Path
----- ----
Grp1 C:\folder1\
Grp1 C:\folder2\
Grp1 C:\folder2\Test\sub\
Grp1 C:\folder2\sub\
Grp1 D:\
Grp1 D:\folder1\ Grp2 C:\folder1\
Grp2 C:\folder1\sub\
-------------------------------------
(en tout cas pour la premiere requete que j'ai marqué)