Bonjour.
Je travaille avec Access 2000. je ne suis débutant en SQL et j'aurais besoin de vos lumières pour comprendre le résultat d'une requete.
J'ai une table "T_FICHIER" contenant entre autres les champs : FIC_NUM_LOT et FIC_NBRE_PIECE_CONTROLE. Par exemple je souhaite connaitre le nombre total de "pièces controlées" pour les enregistrements dont le "numéro de lot" ne contient pas "reb", et qui ont un "nombre de pièces contrôlées" supéieur à un seuil. Pour celà, j'ai essayé deux requêtes :
- la première: une somme de somme (je me suis inspiré de ce qui était déjà fait dans l'application)
- la seconde sans la somme a l'interrieur de la requete Temporaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT Sum(requêteTmp.PiècesControlées) as résultat FROM (SELECT Sum(T_FICHIER.FIC_NBRE_PIECE_CONTROLE) as PiècesControlées FROM T_FICHIER GROUP BY T_FICHIER.FIC_NUM_LOT , T_FICHIER.FIC_NBRE_PIECE_CONTROLE HAVING ((T_FICHIER.FIC_NBRE_PIECE_CONTROLE>[seuil])and(T_FICHIER.FIC_NUM_LOT not like '*reb*'))) as requêteTmp;
Ces deux requêtes fonctionnent mais, renvoient des résultats significativement différents (1000 pièces de différence sur un résultat d'environ 1,5 millions d'enregistrements).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT Sum(requêteTmp.PiècesControlées) as résultat FROM (SELECT T_FICHIER.FIC_NBRE_PIECE_CONTROLE as PiècesControlées FROM T_FICHIER GROUP BY T_FICHIER.FIC_NUM_LOT , T_FICHIER.FIC_NBRE_PIECE_CONTROLE HAVING ((T_FICHIER.FIC_NBRE_PIECE_CONTROLE>[seuil])and(T_FICHIER.FIC_NUM_LOT not like '*reb*'))) as requêteTmp;
Je n'arrive pas vraiment à voir pourquoi ... et surtout je n'arrive pas a savoir laquelle est juste!!![]()
Si quelqu'un pouvais m'éclairer...
Merci d'avance
Fredo
Partager