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

Développement SQL Server Discussion :

Relation père fils : Requête récursive


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 91
    Par défaut Relation père fils : Requête récursive
    Bonjour,

    J'ai un besoin concernant une requête qui doit m'extraire tous les collaborateurs gérés par un manager, sachant que ce manager gère lui même des managers qui gèrent des collaborateurs. Il s'agit d'une arborescence pere-fils dans laquelle il peut y avoir beaucoup de niveau sans que j'en connaisse le nombre.

    Exemple de table d'origine avec la relation collaborateur manager.
    Manager Coll
    0 1
    0 2
    0 3
    1 4
    2 5
    2 6

    Je souhaiterai obtenir le résultat suivant :
    Manager Coll
    0 1
    0 2
    0 3
    0 4
    0 5
    0 6
    1 4
    2 5
    2 6

    Je pensais pouvoir utiliser les CTE (Common Table Expression) mais à priori cela fonctionne plutôt à partir de la base et non du haut de l'arbre.
    Peut être qu'une requête récursive en partant du haut de l'arbre me permettrait de construire mon résultat mais je ne vois pas bien comment.
    Merci par avance pour les réponses ou pistes que vous pourrez m'apporter.
    PS : Je ne peux pas passer par du code et il faut que j'arrive à le faire via une seule requête SQL.

  2. #2
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Sur google, avec une recherche sur les termes:
    msdn cte

    J'obtiens comme premier lien celui-ci:
    http://msdn.microsoft.com/en-us/library/ms186243.aspx

    Qui reprend en exemple:
    The following example shows the semantics of the recursive CTE structure by returning a hierarchical list of employees, starting with the highest ranking employee
    Est ce que ca repond a votre probleme ?

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE T (Manager INT, Coll INT)
     
    INSERT INTO T VALUES (0, 1)
    INSERT INTO T VALUES (0, 2)
    INSERT INTO T VALUES (0, 3)
    INSERT INTO T VALUES (1, 4)
    INSERT INTO T VALUES (2, 5)
    INSERT INTO T VALUES (2, 6)
    La solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    WITH TR
    AS
    (SELECT Manager, Coll
     FROM   T
     UNION  ALL
     SELECT T0.Manager, T1.Coll
     FROM   TR AS T0
            INNER JOIN T AS T1
                  ON T0.Coll = T1.Manager)
    SELECT *
    FROM   TR    
    ORDER BY 1, 2
    Lisez mon cours sur le sujet : http://sqlpro.developpez.com/cours/s...te-recursives/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. [Mapping] Relation père fils sur une même table.
    Par Invité dans le forum Hibernate
    Réponses: 1
    Dernier message: 11/06/2008, 17h14
  2. [MySQL] Relation père-fils en PHP et MySQL
    Par nabians dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 18/07/2007, 11h02
  3. Formulaire sous-formulaire: relation père fils
    Par Zinemon dans le forum IHM
    Réponses: 5
    Dernier message: 27/06/2007, 10h14
  4. Table avec lignes ayant une relation "père-fils"
    Par the java lover dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/04/2007, 11h20
  5. [pthread] relation père - fils ?
    Par jedimind dans le forum C
    Réponses: 3
    Dernier message: 14/11/2005, 11h18

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