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

MS SQL Server Discussion :

Récursivité en SQL


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Récursivité en SQL
    Bonjour.
    Voici le contexte. J'ai une table comme suit :

    Parent Enfant
    1 4
    8 2
    9 8
    9 7

    Les données ne veulent rien dire en soit, mais bon !
    DIsons que, par exemple , le parent 9 a deux enfants, le 7 et le 8. Le 8 est aussi parent de 2

    Ce que je veux, c'est par exemple, c'est avoir la lignée de 9. Donc le résultat devrait contenir
    9
    8
    2
    7

    Comment peut-on faire ca avec SQL ??
    Est-ce qu'il y a une structure de table a utiliser qui serait plus efficace ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Sans connaître le nombre de lignée maximum ?

    Je ne vois qu'une boucle dans une SP.

  3. #3
    Membre habitué
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Points : 151
    Points
    151
    Par défaut
    Salut.
    Sous SQL SERVER 2005 avec les Common Table Expressions , j'obtiens 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
    DECLARE @T TABLE( Parent Int, Enfant Int Not Null )
    INSERT @T VALUES( 1, 4)
    INSERT @T VALUES( 8, 2 )
    INSERT @T VALUES( 9, 8 )
    INSERT @T VALUES( 9, 7);
     
    WITH Lignee( P ) AS (
      SELECT 9
    	UNION ALL
      SELECT t.Enfant
        FROM @T t
        INNER JOIN Lignee L
          ON ( L.P = t.Parent )
    )
    SELECT P FROM Lignee
    C'est la prmière fois que je l'utilise, ma première impression à chaud : c'est à prendre avec une attention particulière!!!!

Discussions similaires

  1. Récursivité avec SQL
    Par lili_lila dans le forum Requêtes
    Réponses: 12
    Dernier message: 17/05/2010, 16h18
  2. Récursivité avec SQL
    Par FrancoisR69 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/07/2009, 21h09
  3. Fonction PL/SQL / Récursivité
    Par rayon dans le forum PL/SQL
    Réponses: 2
    Dernier message: 15/05/2008, 11h53
  4. Récursivité SQL PL/SQL (Postgresql)
    Par sekaijin dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 02/02/2007, 13h16

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