Sql php , requete imbriquée sum ()

Résolu/Fermé
hind5charb Messages postés 12 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 28 décembre 2016 - 11 août 2016 à 05:26
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 12 août 2016 à 14:38
salut ,

après l'insertion des données dans la base de données (des opérations économique) , j'ai afficheé la somme du montants de chaque opération
avec cette commande
select ROUND(sum(montant),3) as total from opp where nom_op="adv" and date=(select date_format(now(),"%Y-%m-%d") );
(chaque opération

mais , je besoin d'utiliser les résultats dans une autre formule .
exp (total1+total2-total3).

pouvez vous me donner une solution (sql ou php) .
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
11 août 2016 à 14:05
Salut,

En sql, tu peux utiliser le mot clé UNION pour regrouper le résultat de plusieurs requête, puis effectuer un SUM sur ce résultat.
Par exemple :
SELECT SUM(total) FROM (
	select ROUND(sum(montant),3) as total from opp where nom_op="adv" and date=(select date_format(now(),"%Y-%m-%d"))
	UNION
	select ROUND(sum(montant),3) as total from opp where nom_op="autre" and date=(select date_format(now(),"%Y-%m-%d"))
        UNION
        select ROUND(sum(montant),3) as total from opp where nom_op="encore autre" and date=(select date_format(now(),"%Y-%m-%d"))
) t1


Bonne journée,
0
hind5charb Messages postés 12 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 28 décembre 2016
11 août 2016 à 15:50
salut ,

je vous remercier à cette aide , mais j'ai une autre question si c'est possible ,
y a-t-il une méthode pour maître les résultats d'une requête sql dans une autre variable simple (php)
par exp
while($donnees=$reponse->fetch()){
$m=".$donnees['total'].";
}
parceque j'ai besoin d'utiliser les résultats de sum dans une autre formule ( total1 - total2) (soustraction )

merci une autre fois .
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 12/08/2016 à 14:38
Si ta requête sql ne retourne qu'un seul résultat, un unique fetch suffit, pas besoin de boucle while.
Si en plus le résultat ne contient qu'une seule colonne (ici total), tu peux également utiliser fetchColumn pour récupérer directement se résultat :
https://www.php.net/manual/fr/pdostatement.fetchcolumn.php

En reprenant l'exemple de la doc :
$bdd = new PDO('...');

$result = $bdd->query('SELECT SUM(total) ...');
$total1 = $result->fetchColumn();

$result = $bdd->query('SELECT SUM(total) ...');
$total2 = $result->fetchColumn();

$result = $bdd->query('SELECT SUM(total) ...');
$total3 = $result->fetchColumn();

$totalFinal = $total1 + $total2 + $total3;
0