Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2010, 21h17   #1
Membre du Club
 
Thibaut LEFEBVRE
Finance
Inscription : octobre 2009
Messages : 123
Détails du profil
Informations personnelles :
Nom : Thibaut LEFEBVRE
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Finance
Secteur : Finance

Informations forums :
Inscription : octobre 2009
Messages : 123
Points : 45
Points : 45
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 :
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
Souri84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 21h33   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonsoir,

normal cette ligne (le <= ) ?

Code sql :
1
2
 
INNER JOIN beta_balance ON beta_coderegroupement.Comptes <= beta_balance.Compte
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 21h51   #3
Membre du Club
 
Thibaut LEFEBVRE
Finance
Inscription : octobre 2009
Messages : 123
Détails du profil
Informations personnelles :
Nom : Thibaut LEFEBVRE
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Finance
Secteur : Finance

Informations forums :
Inscription : octobre 2009
Messages : 123
Points : 45
Points : 45
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....
Souri84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 23h06   #4
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
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 :
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.
osuwariboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 07h33   #5
Membre du Club
 
Thibaut LEFEBVRE
Finance
Inscription : octobre 2009
Messages : 123
Détails du profil
Informations personnelles :
Nom : Thibaut LEFEBVRE
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Finance
Secteur : Finance

Informations forums :
Inscription : octobre 2009
Messages : 123
Points : 45
Points : 45
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é..."
Souri84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h18   #6
Membre du Club
 
Thibaut LEFEBVRE
Finance
Inscription : octobre 2009
Messages : 123
Détails du profil
Informations personnelles :
Nom : Thibaut LEFEBVRE
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Finance
Secteur : Finance

Informations forums :
Inscription : octobre 2009
Messages : 123
Points : 45
Points : 45
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 !!!
Souri84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h28.


 
 
 
 
Partenaires

Hébergement Web