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 06/12/2010, 11h52   #1
Membre du Club
 
Inscription : octobre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 155
Points : 45
Points : 45
Par défaut Requete avec operation

Bonjour,

J'ai la requete suivante :

Code :
1
2
3
4
5
6
 
SELECT  adherent.cotisation + adherent.participation  AS 'total_du',
adherent.montant1 +  adherent.montant2 +  adherent.montant3 - adherent.cotisation - adherent.participation  AS 'reste_paye',
adherent.montant1 +  adherent.montant2 +  adherent.montant3 AS 'total_paye'
FROM adherent LEFT JOIN cours ON adherent.num_cours=cours.num_cours
WHERE adherent.num_adh >-1  AND adherent.statut='Actif'
Et ca fonctionne par contre si je rajoute a la fin une condition s appuyant sur une colonne que j ai cree dynamiquement ca ne marche plus, ca me met : "total_du" colonne inconnu dans la clause WHERE

Code :
1
2
3
4
5
6
7
 
SELECT  adherent.cotisation + adherent.participation  AS 'total_du',
adherent.montant1 +  adherent.montant2 +  adherent.montant3 - adherent.cotisation - adherent.participation  AS 'reste_paye',
adherent.montant1 +  adherent.montant2 +  adherent.montant3 AS 'total_paye'
FROM adherent LEFT JOIN cours ON adherent.num_cours=cours.num_cours
WHERE adherent.num_adh >-1  AND adherent.statut='Actif' 
AND  total_du=reste_paye
Je ne sais meme pas si c'est possible mais je n'arrive pas a trouver ma reponse

Merci
maxxou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 12h00   #2
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Il faut utiliser HAVING pour faire référence à un alias du SELECT.
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 12h27   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 967
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 967
Points : 18 197
Points : 18 197
Envoyer un message via MSN à CinePhil
Comme tu n'utilises que la table adherent, à quoi sert la jointure ?

Et plutôt que d'utiliser HAVING qui en principe n'intervient que lorsqu'il y a un GROUP BY, donc au moins une fonction de regroupement dans le SELECT, il suffit de répéter le calcul dans le WHERE :
Code :
1
2
3
4
5
6
7
SELECT cotisation + participation  AS 'total_du',
    montant1 +  montant2 +  montant3 - cotisation - participation  AS 'reste_paye',
    montant1 +  montant2 +  montant3 AS 'total_paye'
FROM adherent
WHERE num_adh > -1
    AND statut = 'Actif' 
    AND montant1 +  montant2 +  montant3 = montant1 +  montant2 +  montant3 - cotisation - participation
Je dirais aussi que les colonnes montant1, montant2, montant3, ça sent l'erreur de modélisation des données !
Les montants devraient être dans une table séparée, ainsi que le statut.
__________________
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
Vieux 06/12/2010, 12h36   #4
Membre du Club
 
Inscription : octobre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 155
Points : 45
Points : 45
Merci ! Ca marche nickel.
maxxou 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 14h41.


 
 
 
 
Partenaires

Hébergement Web