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

Requêtes MySQL Discussion :

données incohérentes sur une requête


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Par défaut données incohérentes sur une requête
    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.

  2. #2
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Par défaut
    je pense avoir trouvé, même si je ne sais pas comment le résoudre
    Comme quoi, ça sert d'écrire ce qu'on fait.

    Il s'agit du CASE, sur le deuxième tableau, il se calcul correctement
    Sur le premier tableau , j'ai l'impression qu'il ne vérifie que le premier problème de la liste.

Discussions similaires

  1. [AC-2010] Insérer des données à partir d'un formulaire basé sur une requête sélection
    Par xdevel dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 17/10/2014, 13h38
  2. [AC-97] etat graphique et donné sur une requête
    Par claude21 dans le forum IHM
    Réponses: 1
    Dernier message: 06/07/2011, 15h55
  3. Pb sur une requête SQL (de champ vide)
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 11h12
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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