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:
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 ;
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 ;
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.
Partager