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

SQL Firebird Discussion :

[SQL] Requête avec jointure ne renvoie pas les bons résultats.


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut [SQL] Requête avec jointure ne renvoie pas les bons résultats.
    Bonjour,

    J'ai eu beau chercher dans les forums ou sur internet, je n'ai pas trouvé la bonne réponse à mon problème, mais comme je suis débutant en SQL, j'ai dû passer à côté de quelque chose.
    Je suis en firebird 3.x.

    Par une procédure stockée (qui marche maintenant!), j'ai créé des enregistrements dans une table "floraison".
    Afin de vérifier que tous les enregistrements de la table "planting" avaient bien été traités par la procédure, j'ai fait la requête suivante:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select p.n_lot,sum(p.surface) s_plt,sum(p.nb_pied) nbp_plt,sum(f.surface) s_fl,sum(f.nb_pied) nbp_fl from planting p
           join floraison f on f.n_lot = p.n_lot
           group by p.n_lot;

    Les résultats obtenus sont:

    Nom : resltat_req_joint.JPG
Affichages : 301
Taille : 21,5 Ko

    Or, ces résultats sont faux.
    Si je fais des requêtes individuelles sur chaque tables, j'obtiens les bons résultats.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select n_lot,sum(surface) s_plt,sum(nb_pied) nbp_plt   from planting group by n_lot ;

    Nom : resltat_req_planting.JPG
Affichages : 299
Taille : 17,5 Ko

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select n_lot,sum(surface) sur_fl,sum(nb_pied) pied_fl   from floraison group by n_lot ;

    Nom : resltat_req_flor.JPG
Affichages : 293
Taille : 16,1 Ko

    Dans les requêtes simples, on obtient bien les mêmes surfaces et mêmes nombre de pieds pour les lots traités, mais dans la requêtes avec jointure, les surfaces et nombre de pieds sont beaucoup plus élevés.

    Une aide serait la bienvenue pour m'expliquer la bonne jointure à faire. Je pense que la somme se fait à chaque fois qu'il y a un enregistrement pour la jointure, mais je ne sais pas comment résoudre ce problème.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 660
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    J'ai supposé que pour un lot il pouvait y avoir zéro à plusieurs floraisons, d'où une jointure OUTER de lot vers floraison, si c'est le contraire, inversez les deux tables

    Voici :
    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
     
    select L.n_lot
         , sum(L.surface) as Lsurf
         , sum(L.nb_pied) as Lnbpi
         , F.Fsurf
         , F.Fnbpi
    from TLOT L
    left join
         (select n_lot
               , sum(surface) as Fsurf
               , sum(nb_pied) as Fnbpi
          from TFLO
          group by n_lot
         ) as F
       on F.n_lot=L.n_lot
    group by L.n_lot
           , F.Fsurf
           , F.Fnbpi

  3. #3
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut
    Bonjour,

    Merci beaucoup, ça fonctionne très bien avec la sous-requête.
    Maintenant, je vais continuer ma PS qui va rajouter une table et je referai (ou j'essayerai) de refaire le même contrôle sur 2 tables.

    Encore merci beaucoup.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/03/2016, 23h11
  2. Requêt avec sum ne donne pas le bon résultat§
    Par _cece dans le forum Langage SQL
    Réponses: 10
    Dernier message: 04/11/2008, 19h53
  3. Ma requête avec jointures n'affiche pas tout
    Par Tchupacabra dans le forum Langage SQL
    Réponses: 9
    Dernier message: 30/05/2008, 15h49
  4. requête avec jointure qui renvoie des résultats bizarres
    Par Canari74 dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 20/05/2008, 03h13
  5. Réponses: 5
    Dernier message: 13/08/2007, 13h44

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