Sql php , requete imbriquée sum ()

Résolu
hind5charb Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   527
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   527
 
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