J'ai deux tables mysql. Tableau: factureComment faire une requête sum pour un champ de deux tables mysql
id | billtype | amount | advid | paydate |adjid | adjdate |
1 | electric | 10000 | 123 | 2017-01-01 | 50 | 2017-01-03 |
2 | Water | 5000 | 124 | 2017-02-01 | 0 | 0000-00-00 |
3 | Shirt | 500 | 125 | 2017-03-01 | 0 | 0000-00-00 |
Tableau: avance
id | advid | amount | balance | purpose |
1 | 123 | 50000 | 20000 | Bill |
2 | 124 | 70000 | 10000 | Bill |
3 | 125 | 55000 | 15000 | Uniform |
4 | 124 | 60000 | 10000 | Bill |
Je veux créer un menu déroulant afin que pour sélectionner les 'avance' qui ne sont pas encore réajustées (Adjid = 0 et adjdate = 0000 -00 à 00) dans le tableau: projet de loi et que le menu déroulant contiendra également la valeur totale de l'avance pour l'identification même à l'avance (de advid) comme ci-dessous:
<option>Bill-130000</option>
<option>Uniform-55000</option>
comme au total 130000 (70000 + 60000) avance est tak Par contre, avancez le 124
, de sorte que le montant total d'avance dans le menu Option devrait être 130000 dans le cas de Bill. Mais je suis pas calculé montant total de l'avance avec précision:
SELECT sum(a.amount), purpose FROM bill as b, advance as a WHERE b.paydate!='0000-00-00' AND b.adjid!=0 AND a.advid=b.advid GROUP BY a.advid
Montant total en <option></option>
ne vient pas réelle.
Quelle serait la bonne requête dans ce but?
Les résultats que vous avez obtenus sont corrects. La condition 'b.paydate! = '0000-00-00' AND b.adjid! = 0' ne donnera que' advid' = 123 de la table 'bill', donc ne vous donnera que 50000. –
Typiquement, vous auriez GROUP par les colonnes non agrégées dans votre SELECT. – Strawberry