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)

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;
- 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 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).

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