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 :

Requête récursive dans access


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut Requête récursive dans access
    qqun peut il me dire s'il est possible d'écrire une requête récursive sous ACCESS :::
    je ne trouve cette ionformation nulle part, je ne comprends pas pourquoi

    Merci d'avance et a ce lui qui me répondra

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    bienvenue sur le forum,

    et bonjour, oui c'est plus agréable ...

    la réponse à ta question est sur le site
    http://loufab.developpez.com/recursivite/

    Merci de faire des recherches
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut
    re - Bonjour,

    merci pour ta réponse caféine mais si c'est pour me renvoyer vers le 1er lien que tu trouves ...
    j'ai cherché mais je comprends pas ce qu'il y a de marquer,
    franchement c'est pas clair

    moi je veux executer une requete récursive,
    l'exemple il est pas du tout concret, je pige que dalle

    merci quand même

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Si tu ne trouves pas le tutoriel assez clair, je t'invite à poser des questions sur ce que tu ne comprends pas, puisque l'auteur de l'article fait partie de l'équipe de rédaction de developpez.com.
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    En même temps, ta question est guère plus concrete

    La récursivité est une notion bien vaste

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Oui Bonjour ('lut Tof et Caf )

    Comme on me le faisait remarquer à juste titre lors de la mise en ligne de ce tuto, la recursivité n'est pas le terme exact (merci PapyTurbo ) on parle plutôt de requêtes basées sur une requête ou d'affinage dans la recherche par la combinaison de critéres successifs.

    Il s'agit simplement d'une requête où la condition where serait faites en 2 ou plusieurs fois avec un affichage entre les différentes phases.

    Cordialement.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut
    c'est exact, ma question n'est pas concrète non plus
    donc concrètement, j'ai une table qui représente un arbre dans lequel j'aimerais bien pouvoir consulter les valeurs:

    table arbre :
    champs pere champs fils
    avec les valeurs suivantes
    A B
    A C
    A D
    B E
    E F
    D H
    B G
    ...
    je souhaiterais avoir comme résultat :
    si je veux l'arbo de A : A, B, C, D, E, F, G, H (éventuellement pas le A)
    si je pars de B : B, E, F, G

    je sais pas si c'est plus clair mais en tout cas je vous remercie de vous être penché sur mon cas totalement désespéré qui peut être la conséquence de message un peu sec,

    je trouve affligeant qu'on ne trouve pas de réponse sur le net à ce sujet !!

    Merci par avance[/list]

  8. #8
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Bonjour,

    je ne comprends pas encore les champs père et champs fils.

    tu as donc 2 tables

    1 tabble arbres (arbre1, arbre2,....)

    1 table caractéristique ( car1 car2....)

    et une table de liaison arbre-caractéristique et tu aimerais choisir des arbres répondant à plusieurs caractéristique à la fois?

    par exemple tous les arbres qui ont la "car1 et car3 et car4"

    ?? éclairci notre lanterne

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut
    c'est très simple (mais je savais pas qu'il bouffait les espaces donc c'est sur que ma dernière question ne doit pas être très claire)


    j'ai une table avec 2 champs :
    PERE
    FILS

    les données qui se trouvent dans les champs de cette table forment un arbre
    Autrement dit :
    un arbre se définit par une liste de couple pere-fils,


    ben moi je voulais juste une requete qui me donnait l'ensemble des noeuds et des feuilles d'un arbre à parti d'un numéro PERE donné

    Suis-je vraiement plus clair, je me le demande ?
    j'éspère en tout cas l'avoir été

  10. #10
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Trés clair je dirais même

    Mais je doute que ce soit possible avec une simple requête. ça demande reflexion.

    En tout cas c'est possible en VBA

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    il y a t'il une limite au nombre de niveaux ?
    si oui combien ??
    Elle est pas belle la vie ?

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    faire du sql récursif c'est vraiment galère par contre
    la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    "Function monpère(ch1 As String, ch2 As String) As Boolean
    Dim encours As String
    encours = Nz(DLookup("[pére]", "arbre", "fils= '" & ch1 & "'"), "pastrouv")
    If encours = "pastrouv" Then
    monpére = faux
    Exit Function
    Else
    If encours = ch2 Then
    monpère = True
    Exit Function
    Else
    monpère = monpère(encours, ch2)
    End If
    End If
    End Function
    est récursive elle va chercher le père du père tant qu'il y a un ascendant ou que celui cherché est trouvé

    il suffit ensuite pour connaitre les descendants de a de faire une requête sélection sur abre en sélectionnant les fils et monpère(fils;[père cherché]) à vrai
    Elle est pas belle la vie ?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut
    un grand merci à tous ceux qui se sont donnés la peine de me répondre j'ai réussi à trouver la solution à mon problème par VBA
    mais ma question reste toujours en suspens : existe-il une possobilité de requete sql récursive supporté par le moteur de requete access (je pense la fin de ma phrase ne veut pas dire grand chose)

    Merci à tous


    désolé d'avoir été un

  14. #14
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Ce serait cool de partager...
    David.

  15. #15
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 86
    Points : 59
    Points
    59
    Par défaut
    Ayant rencontré ce problème, j'ai décidé de m'inscrire pour partager ma solution!
    Si il y a une limite de niveau :
    Dans un premier temps, créer une requête (à partir de l'interface c'est beaucoup plus facile)
    Ensuite il suffit d'y ajouter la table contenant les deux attributs (ex : A et B avec A contenant que des pères et B des pères ou des fils ) et de multiplier cette table suivant le nombre de niveaux de l'arbre (on les appellera des copies).
    Puis faire une jointure gauche (LEFT JOIN) entre le B de la table initiale et le A de la table copie1. Puis entre le B de la table copie1 et le A de la table copie2 et ainsi de suite... jusqu'à qu'il n'y ait plus de résultats possibles! Pour obtenir l'arbre, il suffit alors de faire un affichage de l'attribut A (table initiale), de l'attribut B (table initiale), de l'attribut B (table copie1), de l'attribut B (table copie2)... je pense que vous avez compris l'idée
    Ainsi on peut dérouler l'arbre et obtenir l'ensemble des pères et des fils associés dans une table!
    J'espère en avoir aidé quelques uns

  16. #16
    Membre expérimenté
    Avatar de minot83
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2006
    Messages
    972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 972
    Points : 1 430
    Points
    1 430
    Par défaut
    Citation Envoyé par cag's Voir le message
    Ayant rencontré ce problème, j'ai décidé de m'inscrire pour partager ma solution!
    Si il y a une limite de niveau :
    Dans un premier temps, créer une requête (à partir de l'interface c'est beaucoup plus facile)
    Ensuite il suffit d'y ajouter la table contenant les deux attributs (ex : A et B avec A contenant que des pères et B des pères ou des fils ) et de multiplier cette table suivant le nombre de niveaux de l'arbre (on les appellera des copies).
    Puis faire une jointure gauche (LEFT JOIN) entre le B de la table initiale et le A de la table copie1. Puis entre le B de la table copie1 et le A de la table copie2 et ainsi de suite... jusqu'à qu'il n'y ait plus de résultats possibles! Pour obtenir l'arbre, il suffit alors de faire un affichage de l'attribut A (table initiale), de l'attribut B (table initiale), de l'attribut B (table copie1), de l'attribut B (table copie2)... je pense que vous avez compris l'idée
    Ainsi on peut dérouler l'arbre et obtenir l'ensemble des pères et des fils associés dans une table!
    J'espère en avoir aidé quelques uns
    Bonjour,

    oui cela fonctionne.

    Par contre si on a (comme dans beaucoup de liens pere/fils) une notion de hiérarchie à conserver pour les liens (cf mon post http://www.developpez.net/forums/d14...ministratives/) c'est plus compliqué.

    en faisant comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT T_Agents.ID_Agent,
           T_Agents.[NOM/Prénom],
           T_Structures.LB_Structure,
           T_Structures_1.LB_Structure,
           T_Structures_2.LB_Structure,
           T_Structures_3.LB_Structure,
           T_Structures_4.LB_Structure
    FROM (T_Agents
          LEFT JOIN (T_Structures
                     RIGHT JOIN TR_Agent_Structure ON T_Structures.ID_Structure=TR_Agent_Structure.FK_Structure) ON T_Agents.ID_Agent=TR_Agent_Structure.FK_Agent)
    LEFT JOIN (T_Structures AS T_Structures_4
               RIGHT JOIN ((T_Structures AS T_Structures_3
                            RIGHT JOIN ((T_Structures AS T_Structures_2
                                         RIGHT JOIN ((T_Structures AS T_Structures_1
                                                      RIGHT JOIN TR_Structures ON T_Structures_1.ID_Structure=TR_Structures.FK_Structure_pere)
                                                     LEFT JOIN TR_Structures AS TR_Structures_1 ON T_Structures_1.ID_Structure=TR_Structures_1.FK_Structure_fille) ON T_Structures_2.ID_Structure=TR_Structures_1.FK_Structure_pere)
                                        LEFT JOIN TR_Structures AS TR_Structures_2 ON T_Structures_2.ID_Structure=TR_Structures_2.FK_Structure_fille) ON T_Structures_3.ID_Structure=TR_Structures_2.FK_Structure_pere)
                           LEFT JOIN TR_Structures AS TR_Structures_3 ON T_Structures_3.ID_Structure=TR_Structures_3.FK_Structure_fille) ON T_Structures_4.ID_Structure=TR_Structures_3.FK_Structure_pere) ON T_Structures.ID_Structure=TR_Structures.FK_Structure_fille;
    je récupère bien tous mes agents, leur affectation, et les structures administratives au dessus.


    Mais si je souhaite afficher la liste des agents, puis une colonne par type hiérarchique de structure, là je n'y parviens pas en une seule requête.
    si le message est pertinent : un petit si votre problème est résolu, n'oubliez pas le Tag Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. exécution d'une requête SQL dans access
    Par skyarnangel dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2009, 11h18
  2. Piloter une requête Ajout dans Access
    Par Pistachou dans le forum Bases de données
    Réponses: 14
    Dernier message: 04/02/2009, 19h06
  3. Problême requête SQL dans access..Erreur 3079
    Par DavidGG dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/01/2008, 17h48
  4. [VB]Utilisé une requête enregistrée dans ACCESS
    Par anikeh dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/01/2006, 17h54
  5. problème requête between dans access
    Par Vodkha dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/09/2005, 07h50

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