Bonjour,

j'ai quelque petit soucis sur une requête, je cherche depuis ce matin mais je ne trouve pas mon erreur.
Le contexte :
Je fais un tableau en php qui me permet de "zoomer" sur les résultats d'une requête
Voici mon tableau de départ :
---------------------------------------------------
| ENTREPOT | PREPARATEURS | VALEURS | NOMBRE |
---------------------------------------------------
| Sec | Dupont | 8179.26 | 264 |
| Frais | Celine | 7405.50 | 39 |
| Bazar | André | 4071.50 | 215 |
---------------------------------------------------

Il correspond en valeur d'euro au nombre de palette préparé en erreur.
Lorsque l'on clique sur un préparateur, on récupère un 2eme tableau contenant l'ensemble des palettes, leurs valeurs et le nombre d'article. La valeur dans le premier tableau doit donc être égales a la somme des lignes du deuxième tableau.
Pourtant dans certain cas, je ne trouve pas du tout la même chose.
Par exemple pour le préparateur 'céline' de valeur 7405.50 je trouve bien 39 lignes mais de total 1500€ environ.
Voici la requête du premier tableau :

Le CASE me permet de gérer le cas ou un problème sur un article a était indiquer en UVC plutot qu'en carton.
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
19
20
21
22
23
24
25
26
27
28
29
30
 
SELECT 
entrepots.id AS identrepot, 
entrepots.nom AS entrepot, 
preparateurs.nom AS preparateur, 
preparateurs.id AS idpreparateur,
CASE 
lignes.probleme 
WHEN '1' 
THEN 
round(sum((lignes.qte_liv-lignes.qte_recu)*lignes.prix_unitaire),2) 
WHEN '9' 
THEN 
round(sum((lignes.qte_liv-lignes.qte_recu)*lignes.prix_unitaire),2) 
ELSE 
round(sum((lignes.qte_liv-lignes.qte_recu)*lignes.prix_unitaire*articles.cdt_carton),2) 
END AS total,
count(*) As nbr 
FROM 
Litiges 
LEFT OUTER JOIN lignes ON lignes.litige=litiges.id 
LEFT OUTER JOIN preparateurs ON preparateurs.id=lignes.preparateur 
LEFT OUTER JOIN articles ON lignes.article=articles.id 
LEFT OUTER JOIN entrepots ON preparateurs.entrepot=entrepots.id 
WHERE litiges.traitement=1 
AND lignes.acceptation=1 
AND litiges.etat=4 
AND litiges.date_magasin >= '2010-03-03' 
AND litiges.date_magasin <= '2010-06-22' 
GROUP BY entrepots.id,entrepots.nom, preparateurs.nom,preparateurs.id ORDER BY total desc
Et le deuxieme tableau :
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
19
20
21
22
23
24
25
26
27
 
SELECT 
num_bl,
num_pl,
CASE 
lignes.probleme 
WHEN '1' 
THEN 
round(sum(lignes.prix_unitaire*(lignes.qte_liv-lignes.qte_recu)),2) 
WHEN '9' 
THEN 
round(sum((lignes.qte_liv-lignes.qte_recu)*lignes.prix_unitaire),2) 
ELSE 
round(sum(lignes.prix_unitaire*articles.cdt_carton*(lignes.qte_liv-lignes.qte_recu)),2) 
END AS total,
count(*) AS nbr 
FROM lignes 
LEFT OUTER JOIN litiges ON litiges.id=lignes.litige 
LEFT OUTER JOIN articles ON articles.id=lignes.article 
WHERE litiges.traitement=1 
AND lignes.acceptation=1 
AND litiges.etat=4 
AND litiges.date_magasin >= '2010-03-03' 
AND litiges.date_magasin <= '2010-06-22' 
AND lignes.preparateur=151 
GROUP BY lignes.num_bl,lignes.num_pl 
ORDER BY total desc
Je ne sais si quelqu'un pourra m'aider, le cas est assez compliqué et je n'ai pas expliqué tout l'ensemble des tables, il vous manquera surement de l'info.