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 :

Importation de données dans des tables dépendantes l'une de l'autre


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 87
    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

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Pouvez-vous indiquer

    1/votre version de SQL Server
    2/un jeu de données
    3/ le résultat attendu

  3. #3
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 87
    Par défaut
    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

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    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...

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Je n'ai pas de quoi tester sous la main, mais que donne ceci (à adapter peut etre...)

    Code SQL : 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
     
    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

  6. #6
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 87
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/02/2012, 22h50
  2. [AC-2007] Import de données dans 2 tables
    Par james68700 dans le forum Access
    Réponses: 2
    Dernier message: 31/10/2011, 12h14
  3. Import de données dans plusieurs tables
    Par madmox dans le forum ADO.NET
    Réponses: 7
    Dernier message: 21/09/2010, 18h38
  4. [VB.Net] Comment insérer des données dans des tables ?
    Par shakoulé dans le forum Accès aux données
    Réponses: 2
    Dernier message: 23/09/2006, 22h46

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