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

Langage SQL Discussion :

Doublons dans requête avec jointures


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut Doublons dans requête avec jointures
    Bonjour,

    J'ai 4 tables : Reacteurs, Reacteur_Cycles, Dissolutions, Assemblages.
    Reacteurs -> PK : id_reacteur
    Reacteur_Cycles -> PK : (id_reacteur, no_cycle) -> FK : id_reacteur
    Dissolutions -> PK : id_dissolution -> FK : (id_reacteur, no_cycle), id_reacteur
    Assemblages -> PK : id_assemblage -> FK : (id_reacteur, no_cycle), id_reacteur, id_dissolution

    Il y a quelque temps j'avais rencontré un probléme : http://www.developpez.net/forums/d15...ction-d-eleve/
    Aujourd'hui je rencontre le même probléme mais je n'arrive pas le résoudre et je dois avouer que je ne comprends pas...

    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT DISTINCT R.id_reacteur, RC.no_cycle, D.id_dissolution, A2.id_assemblage 
    FROM Assemblages A1
        INNER JOIN Assemblages A2
        ON A1.id_dissolution=A2.id_dissolution
             INNER JOIN Dissolutions D   
             ON A1.id_dissolution=D.id_dissolution
                  INNER JOIN Reacteurs R
                  ON D.id_reacteur=R.id_reacteur
                      INNER JOIN Reacteur_Cycles RC
                      ON R.id_reacteur=RC.id_reacteur
    Quand j'effectue cette requête, j'obtiens pleins de doublons.
    Normalement l'id assemblage est lié à un réacteur et à un no_cycle du réacteur. Mais ici j'obtiens l'id_assemblage dans tous les no_cycles du reacteur dans lequel l'id_assemblage se trouve.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Normalement je devrais avoir: 
    id_assemblage     id_reacteur     no_cycle
    5                 2               1
    6                 3               2
    Ce que jobtiens :
    id_assemblage     id_reacteur     no_cycle
    5                 2               1
    5                 2               2
    6                 3               1
    6                 3               2
    6                 3               3
    6                 3               4
    (et ça continue pour tous les no_cycle de cet id_reacteur)
    Quelqu'un aurait-il une idée sur comment procéder pour ne plus avoir ces doublons?

    Merci.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Ah TROUVE!!!

    En fait le Pb venait de la mauvaise gestion de la jointure au niveau de la clé composée (de la tabel REACTEUR_CYCLES)
    Je corrige si ça peut aider d'autres personnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT DISTINCT R.id_reacteur, RC.no_cycle, D.id_dissolution, A2.id_assemblage 
    FROM Assemblages A1
        INNER JOIN Assemblages A2
        ON A1.id_dissolution=A2.id_dissolution
             INNER JOIN Dissolutions D   
             ON A1.id_dissolution=D.id_dissolution
                  INNER JOIN Reacteur_Cycles RC
                  ON D.id_reacteur=RC.id_reacteur
                  AND D.no_cycle=RC.no_cycle
                      INNER JOIN Reacteurs R
                      ON R.id_reacteur=RC.id_reacteur
    Bonne journée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2015, 16h56
  2. Réponses: 1
    Dernier message: 30/10/2009, 08h48
  3. Mise à jour de table impossible après requête avec jointure
    Par sto dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/03/2004, 13h24
  4. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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