IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Extraction suivant une hiérarchie


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    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.

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    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.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTable WHERE NbreEnfants([Hierarchie])=2;

Discussions similaires

  1. Réponses: 14
    Dernier message: 28/08/2006, 17h38
  2. Extraction d'une partie d'une colonne
    Par choubiroute dans le forum Oracle
    Réponses: 8
    Dernier message: 01/06/2005, 14h29
  3. Réponses: 5
    Dernier message: 29/09/2004, 11h05
  4. Extraction d'une chaine de caractères
    Par megane dans le forum Langage
    Réponses: 2
    Dernier message: 05/01/2004, 14h52
  5. extraction dans une date
    Par HULK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/11/2003, 08h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo