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

PHP & Base de données Discussion :

requête qui renvoie un mauvais résultat [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut requête qui renvoie un mauvais résultat
    Hello à tous,

    J'ai un bug dans mes requêtes mais je ne comprends pas... voici mon souci :

    Ma requête en gros :

    Si le solde du compte client est positif alors on applique un code de regroupement (code débit, c'est inversé, nous sommes en comptabilité) sinon on applique un autre code de regroupement client (code crédit).

    Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT beta_coderegroupement.Comptes, IF(beta_balance.Solde > 0, beta_coderegroupement.Debit , beta_coderegroupement.Credit) AS valeur
    FROM beta_coderegroupement
    INNER JOIN beta_balance ON beta_coderegroupement.Comptes <= beta_balance.Compte
    WHERE beta_coderegroupement.Comptes <= ?
    ORDER BY beta_coderegroupement.Comptes DESC
    LIMIT 1
    beta_balance à la base est composée de 4 champs :
    Compte comptable client (6 chiffres)
    Nom du client
    Solde du compte
    Date de paiement (M, M+1, M+2...)

    La requête du dessus vient remplir la table avec le code de regroupement dans un cinquième champ... et c'est là que j'ai un souci...

    Dans les deux tables, les comptes sont de type int(6).

    Dans 98% des cas, cette requête fonctionne mais dans les 2 % restants, ça ne prend pas les bons comptes.... et je ne peux pas interverser les codes (sinon je l'aurais fait...)

    Savez vous pourquoi ?

    D'avance merci pour vos réponses,

    Thibaut

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonsoir,

    normal cette ligne (le <= ) ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INNER JOIN beta_balance ON beta_coderegroupement.Comptes <= beta_balance.Compte

  3. #3
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    oui, c'est normal...

    Comment tous les comptes clients ne sont pas dans la table beta_coderegroupement... Si le n° de compte n'est pas présent alors on prend celui qui est juste inférieur....

  4. #4
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Dans ton cas, est ce que la valeur "0" est considérée comme positive ou négative? Dans ta requête actuellement, les valeurs "0" sont considérées comme un code crédit. Si ce n'est pas le cas, il faut modifier la condition de ton IF pour:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IF(beta_balance.Solde >= 0, beta_coderegroupement.Debit , beta_coderegroupement.Credit)
    C'est peut-être la raison pour laquelle tu as quelques écarts.

  5. #5
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    Le 0 n'est pas un souci, puisque, si par la suite, je fais un sum(solde) group by coderegroupement, cela ne vient pas modifier le résultat...

    En fait cette erreur n'apparait que pour quelques lignes... peut être une dizaine sur 1200 ou 1300... a croire que la requete confond nombre positif et nombre négatif....

    Pourtant quand je l'execute dans phpmyadmin, elle me renvoie bien le bon code de regroupement... mais dès que je l'utilise dans ma page, là, j'ai l'erreur...

    et c'est pas comme si tout était faux, où là je me dirais "je me suis planté..."

  6. #6
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    Problème résolu :

    J'ai ajouté un id dans ma table beta_balance et j'ai modifié ma requête comme ceci :

    en ajoutant le numéro d'id dans mon select inner join... et du coup c'est good !!

    Merci en tout cas de vous être penché sur mon problème !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requête qui retourne un mauvais résultat
    Par chris22 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/03/2012, 17h15
  2. Requête qui renvoie les valeurs les plus souvent affichés
    Par athos7776 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 25/07/2007, 18h54
  3. Requête qui renvoie 'Null'
    Par Invit-é dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 11/06/2007, 18h32
  4. Réponses: 23
    Dernier message: 31/05/2007, 17h09
  5. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 11h07

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