Bonjour à tous
Dans le cadre de la gestion d'un club d'escrime j'ai une table (F) qui contient ce que le membre doit payer pour être inscrit et une autre table (V) qui contient les payements que chaque membre a effectué.
Je voudrais faire des requêtes permettant de sélectionner:
- Les membres qui ont tout payé
- les membres qui ont partiellement payé
la table F a cette structure
Ref INT CLEF PREIMAIRE
Lic INT
Cot INT
Loc INT
Elle ressemble à ça
Ref |
Lic |
Cot |
Loc |
1 |
100 |
50 |
20 |
2 |
100 |
30 |
20 |
3 |
100 |
50 |
0 |
la table V qui a cette structure
Ref INT CLEF PREIMAIRE
Mbr INT CLEF ETRANGERE LIEE A F.Ref
Ver INT
La table V ressemble à ça
Ref |
Mbr |
Ver |
1 |
1 |
50 |
2 |
1 |
30 |
3 |
2 |
50 |
4 |
2 |
50 |
5 |
2 |
30 |
6 |
3 |
50 |
Pour sélectionner les membres qui ont tout payé il faut que l'égalité suivante soit vraie: F.Lic+ F.Cot+F.Loc= SELECT SUM(V.Ver) WHERE Mbr= F.Ref
Pour sélectionner les membres qui partiellement payé l'égalité précédente doit être fausse
J'ai cherché à faire cela en une seule requête car je voulais éviter de faire une boucle pour chaque membre de la table mais le résultat n'est pas bon.
Pour valider le concept j'ai déjà essayer cette requête qui permet d'afficher ce que chaque membre doit et ce qu'il a versé.
1 2 3
| SELECT `F`.`Ref` AS Ref, `F`.`Lic`+`F`.`Cot`+`F`.`Location` AS Total, SUM(`V`.`Ver`) AS Paye
FROM `F`
JOIN `V` ON `F`.`Ref`=`V`.`Mbr` |
Au lieu d'avoir
Ref |
Total |
Paye |
1 |
170 |
80 |
2 |
150 |
130 |
3 |
150 |
50 |
J'ai
Il semble que la fonction SUM ait fait la somme de toutes les ligne sans tenir compte du champs Mbr
J'ai aussi essayé avec une sous requête mais le résultat n'est pas mieux
1 2 3 4
| SELECT `F`.`Ref` AS Ref, `F`.`Lic`+`F`.`Cot`+`F`.`Location` AS Total,
(SELECT SUM(`V`.`Ver`) FROM `V` WHERE Ref =`V`.`Mbr`) AS Paye
FROM `F`
JOIN `V` ON `F`.` |
J'ai le résultat suivant
Ref |
Total |
Paye |
1 |
170 |
null |
2 |
150 |
null |
3 |
150 |
null |
Partager