Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/05/2011, 11h18   #1
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 70
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 70
Points : 13
Points : 13
Par défaut Importation de données dans des tables dépendantes l'une de l'autre

Bonjour,

Je chercher à importer des données dans 2 tables dépendantes l'une de l'autre.

Une table Branche :
IdBranche
IdGroupeBranche (-> table GroupeBranche)
IdGroupeBrancheFils (-> table GroupeBranche)

et une table GroupeBranche :
IdGroupeBranche
IdBrancheParent (-> table Branche)

En gros j'aurais besoins de faire une requête qui me retourne tout l'arbre (dépendance entre branche et GroupeBranche de X niveau)

Comment faire ?

Merci
weebo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h34   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

Pouvez-vous indiquer

1/votre version de SQL Server
2/un jeu de données
3/ le résultat attendu
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 12h26   #3
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 70
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 70
Points : 13
Points : 13
1/ Sql Server managment 2008
2/
| IdGroupeBranche | IdBrancheParent |
|       1         |     NULL        |
|       2         |      4          |
|       4         |      3          |
| IdBranche | IdGroupeBranche | IdGroupeBrancheFils |
|    3      |       1         |         4           |
|    4      |       1         |         2           |
3/ Récupérer toutes les dépendances possibles pour tous les niveaux
weebo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 14h25   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par weebo Voir le message
3/ Récupérer toutes les dépendances possibles pour tous les niveaux
C'est à dire ?

Il y a quelque chose que je ne comprend pas dans votre modèle, et votre exemple ne m'aide pas : pourquoi avoir dans une table une référence vers la branche mere, et dans une autre table, une référence vers la branche fille ?

En plus, une branche ne peut avoir qu'une fille ?

pouvez vous nous dire ce que cela représente, cela pourra peut être aider à la compréhension du problème...
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 14h38   #5
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Je n'ai pas de quoi tester sous la main, mais que donne ceci (à adapter peut etre...)

Code SQL :
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
 
WITH Arbre AS (
    SELECT 
        G.IdGroupeBranche,
        B.IdBranche,
        B.IdGroupeBrancheFils
    FROM GroupeBranche G
    LEFT OUTER JOIN Branche B 
        ON G.IdGroupeBranche = B.IdGroupeBranche
    WHERE G.IdBrancheParent IS NULL
 
    UNION ALL
 
    SELECT 
        G.IdGroupeBranche,
        B.IdBranche,
        B.IdGroupeBrancheFils
    FROM Arbre A
    INNER JOIN GroupeBranche G
        ON G.IdGroupeBranche = A.IdGroupeBrancheFils
    LEFT OUTER JOIN Branche B 
        ON G.IdGroupeBranche = B.IdGroupeBranche
)
SELECT *
FROM Arbre
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 11h35   #6
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 70
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 70
Points : 13
Points : 13
dsl pour le retard !

Merci pour la réponse, ce n'est pas exactement ce que je voulais mais ça m'a dirigé dans la bonne voix !

Voila ma requête au final :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
WITH 
   tree (id, gb, gbf)
	AS (
		SELECT IdBranche, IdGroupeBranche, IdGroupeBrancheFils
		FROM Branche
		WHERE IdGroupeBranche IN (SELECT IdGroupeBranche FROM GroupeBranche)
 
		UNION ALL
 
		SELECT IdBranche, IdGroupeBranche, IdGroupeBrancheFils
		FROM Branche b
		INNER JOIN tree t ON t.gbf = b.IdGroupeBranche
	)
SELECT * FROM tree
weebo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h33.


 
 
 
 
Partenaires

Hébergement Web