Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 08/03/2011, 15h20   #1
Invité régulier
 
Homme Sylvain
Inscription : mars 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mars 2011
Messages : 7
Points : 5
Points : 5
Par défaut Recherche bonne syntaxe requête

Bonjour,

je cherche a faire une requête depuis ce matin mais je ne sais pas trop comment faire.

Voici mes tables :
Facture : id, date_facture, external_client_id, montant
Client : nom, prenom, ...
Paiement : id, type_paiement, date_paiement, statut

Je voulais récupérer les clients en impayés donc j'ai fait cette requête :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT client
FROM paiement p
WHERE statut="EFFECTUE"
AND client IS NOT NULL
GROUP BY client
HAVING ROUND(SUM(montant),2) < (SELECT ROUND(SUM(montant_facture), 2)
						FROM facture f
						WHERE external_client_id = p.client
						AND f.etat >= 2
						GROUP BY external_client_id);
La requête regarde quel client a payé moins que ce qu'il était facturé.
Cependant quand les factures arrivent de nouveau il faut que la facture et le paiement associé du mois en cours soit pris en compte seulement si le statut du paiement est égale à REJETE.

Mais impossible de trouver la bonne requête
tsubasa62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 10h13   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 993
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 993
Points : 18 246
Points : 18 246
Envoyer un message via MSN à CinePhil
Citation:
Paiement : id, type_paiement, date_paiement, statut
Code :
1
2
3
4
5
SELECT client
FROM paiement p
WHERE statut="EFFECTUE"
AND client IS NOT NULL
GROUP BY client
Déjà, il n'y a pas la colonne "client" dans la table "paiement" donc cette requête ne peut pas fonctionner !

Dans la sous-requête, il y a aussi une colonne f.etat ne figurant pas dans la description de la table facture.

Quant à ça :
Citation:
Cependant quand les factures arrivent de nouveau il faut que la facture et le paiement associé du mois en cours soit pris en compte seulement si le statut du paiement est égale à REJETE.
Désolé mais je n'y comprends rien !

Alors la description réelle des tables (résultat complet de SHOW CREATE TABLE sur chaque table), un besoin clair, un jeu de données et le résultat attendu aideraient beaucoup à la compréhension du problème.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil 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 16h27.


 
 
 
 
Partenaires

Hébergement Web