Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/03/2011, 15h24   #1
Membre du Club
 
Avatar de despeludo
 
Inscription : janvier 2004
Messages : 112
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 112
Points : 41
Points : 41
Par défaut Extraction suivant une hiérarchie

Bonjour à tous,

Actuellement, j'ai une table dont la structure simplifiée est la suivante :
[ID] [Hierarchie]

où ID est un numéro et hiérarchie est une chaine de caractère au format x.y.z (ex: 4.6.3).

De cette table je souhaiterais pouvoir extraire l'ensemble des champs qui n'ont pas d'enfants (par exemple si j'ai les niveaux hiérarchiques 4, 4.1, 4.1.1, je ne veux que 4.1.1).
Y aurait-il moyen d'écrire une requête qui fasse ça ?
Sinon comment parvenir à mes fins ?

Merci.
__________________
Un ordinateur fait ce qu'on lui demande, et c'est bien le problème.
despeludo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 10h13   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Despeludo,

Pas en une seule requête...

L'idée est de jouer avec les Gauche() et les NbCar(), via l'assistant de création de requête.

Soit T1, la table Hierarchie et T2, la table Hierarchie

En gros, si T1.Hierarchie est présent dans T2.Gauche(T1.Hierarchie ; NbCar(T1.Hierarchie)) avec ID différent, alors l'enregstrement de T2 ne t'intéresse pas. A tester, mais l'idée semble correcte.

Pas trop le temps les requêtes, mais je pense que tu as une base de travail.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 11h45   #3
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Bonjour,

Si ton champ hiérarchie n'est jamais plus long que A.B.C (c'est-à-dire si tu n'as jamais A.B.C.D ou A.B.C.D.E), voici une méthode :

Tu crées une fonction publique dans un module :
Code :
1
2
3
4
5
6
7
Public Function NbreEnfants(strChaine As String)
 
    Dim Tab1 As Variant
    Tab1 = Split(strChaine, ".")
    NbreEnfants = UBound(Tab1)
 
End Function
Puis tu crées ta requête :
Code :
SELECT * FROM MaTable WHERE NbreEnfants([Hierarchie])=2;
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h52.


 
 
 
 
Partenaires

Hébergement Web