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 :

Procédure récursive ordonnée


Sujet :

Développement SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut Procédure récursive ordonnée
    Bonjour,

    j'utilise cette procédure pour afficher les dépendances de chaque ligne
    mon souci :
    elle va afficher les premières ligne selon l'id (110) renseigné et ensuite les dépendances pour chaque id
    serait il possible de récupérer les dépendances id pr id sachant que plusieurs niveaux existent ?


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE FindEntitesDependantesOrder
    	@id_entite int
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
    	DECLARE @Rows int
    	DECLARE @Level int
    	SET @Level = 1
    	DECLARE @TableEntites table(  
        id_entite int,  
        id_entite_dependante int,
    	level int)
     
    	INSERT INTO @TableEntites (id_entite, id_entite_dependante, level)
    	SELECT id_entite, id_entite_dependante, @Level
    	FROM am3_entites 
    	WHERE id_entite_dependante = @id_entite
    	SELECT @Rows=@@ROWCOUNT
     
    	WHILE (1=1)
    	BEGIN
    		INSERT INTO @TableEntites (id_entite, id_entite_dependante, level)
    		SELECT am3_entites.id_entite, am3_entites.id_entite_dependante, @Level + 1
    		FROM am3_entites INNER JOIN @TableEntites AS te ON am3_entites.id_entite_dependante = te.id_entite
    		WHERE te.level = @Level
    		SELECT @Rows=@@ROWCOUNT
    		SET @Level = @Level + 1
    	  IF @Rows = 0
    		 BREAK;
    	END
     
    	SELECT id_entite, id_entite_dependante FROM @TableEntites
     
    END
    GO
    donne comme résultat :

    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
     
    id_entite    id_entite_dependante
    303876	110
    303900	110
    303921	110
    303929	110
    303971	110
    303878	303876
    303884	303876
    303888	303876
    303892	303876
    303898	303876
    303899	303876
    303906	303900
    303910	303900
    303932	303929
    j'aimerais obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    id_entite id_entite_dependante
    303876	110
    303878	303876
    380878	303878	
    385522     380878	
    303900	110
    303920	303900	
    303921	110
    303929	110
    303971	110
    Merci pour votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonsoir,
    Je ne comprend pas comment tu passes de ta première liste à la seconde ? Je ne comprends pas ce que tu veux obtenir.

    Joyeuses fêtes.
    Soazig

  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 760
    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 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    Par défaut
    Merci de respecter la charte de postage en posant le DDL de vos tables...
    http://www.developpez.net/forums/d96...vement-poster/

    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/ * * * * *

Discussions similaires

  1. Procédure récursive et pointeurs
    Par paulfr dans le forum Langage
    Réponses: 6
    Dernier message: 04/08/2008, 23h49
  2. Réponses: 2
    Dernier message: 29/05/2008, 10h53
  3. Procédure récursive nb max d'appel
    Par Fred29 dans le forum SQL
    Réponses: 1
    Dernier message: 08/05/2008, 08h53
  4. [VB] Organigramme d'une procédure récursive.
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 06/11/2005, 10h53
  5. Procédure Récursives
    Par DocCoinCoin dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 30/10/2002, 19h27

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