Sql php , requete imbriquée sum ()

Résolu
hind5charb Messages postés 15 Statut Membre -  
Pitet Messages postés 2845 Statut Membre -
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) .

1 réponse

  1. Pitet Messages postés 2845 Statut Membre 530
     
    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
    1. hind5charb Messages postés 15 Statut Membre
       
      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
    2. Pitet Messages postés 2845 Statut Membre 530
       
      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