Bonjour à tous, je suis en train de développer un projet en php html et javascript, et une fois de plus je fais face à un problème de SQL qui me pose un gros souci.
En fait, j'ai une table facture, eleve, paiement, annee_scolaire, type_ecole et une table site.
Ci-dessous la structure de toutes les tables
tbl_eleve_el = el_id, el_nom
tbl_facture_fac = fac_code, fac_montant, fac_motif, el_id,typ_id, sit_id, ann_id
tbl_paiement_pai = pai_id, pai_mont_cash, pai_mont_rest, fac_code
tbl_typeecole_typ = typ_id, typ_libelle
tbl_site_sit = sit_id, sit_libelle
tbl_annee_scolaire_ann = ann_id, ann_libelle
L'idée est d'obtenir une liste des élèves qui ont déjà payés ou qui n'ont pas encore payés le frais scolaire.
Une fois, la liste affichée, qu'on ait la possibilité de filtrer la liste par montant. Un montant estimé minimum payé par chaque élevé, histoire de connaître les élèves qui doivent encore bcp d'argent et de leur rappeler de s'acquitter avant une date d'échéance qui leur sera donnée.
Voici la requête que je lançais
SELECT
E.el_nom AS Nom,
COALESCE(SUM(P.pai_mont_cash_usd), 0) AS montant_cash,
(F.fac_mont - COALESCE(SUM(P.pai_mont_cash_usd), 0)) AS solde
FROM
tbl_facture_fac AS F
JOIN tbl_etudiant_etu AS E ON F.el_id = E.el_id
JOIN tbl_typeecole_typ AS T ON F.typ_id = T.typ_id
JOIN tbl_site_sit AS S ON F.sit_id = S.sit_id
JOIN tbl_annee_scolaire_ann AS A ON F.ann_id = A.ann_id
LEFT JOIN tbl_paiement_pai AS P ON F.fac_code = P.fac_code
WHERE
T.typ_id = 1 AND
S.sit_id = 1 AND
A.ann_id = 1
Le problème se pose au niveau de l'affichage:
(F.fac_mont - COALESCE(SUM(P.pai_mont_cash_usd), 0)) AS solde
Je vous prie de m'eclaircir là dessus car je suis vraiment perdu
Je viens de reflechir autrement, en faisant une requête pour obtenir la liste des élèves ayant payé un frais.
Là j'ai obtenu la liste de tous les élèves, mais le souci reste au niveau de vouloir trier ou filtrer uniquement les
élèves un certains montant du frais en question (par exemple: si le frais de paiement est de 50 usd, on aimerait avoir la liste des élèves qui la moitié du montant de frais), mais avec cette requête, le résultat ne correspond pas à mon attente, car elle me renvoit la liste même des élèves qui ont un solde 0.
Je vous prie de me sortir de l'ignorance, apparemment j'ai loupé quelque chose
SELECT
E.etu_nom_complet AS Nom_Complet,
SUM(P.pai_mont_cash_usd) AS montant_cash,
F.fac_mont - SUM(P.pai_mont_cash_usd) AS Dettes,
T.typ_libelle AS Nom_Ecole,
S.sit_libelle AS Nom_Site,
A.ann_libelle AS Annee_scolaire
FROM
tbl_facture_fac AS F
JOIN tbl_paiement_pai AS P ON F.fac_code = P.fac_code
JOIN tbl_eleve_el AS E ON F.el_id = E.el_id
JOIN tbl_typeecole_typ AS T ON F.typ_id = T.typ_id
JOIN tbl_site_sit AS S ON F.sit_id = S.sit_id
JOIN tbl_annee_scolaire_ann AS A ON F.ann_id = F.ann_id
JOIN tbl_frais_fra AS Fr ON F.fra_id = F.fra_id
WHERE
T.typ_id = 1 AND
S.sit_id = 1 AND
A.ann_id = 1 AND
Fr.fra_id = 1 AND
P.pai_mont_cash_usd = 50
GROUP BY F.fac_code