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