Affichage d'un tableau avec 2 requêtes différente [Résolu/Fermé]

Signaler
Messages postés
60
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
7 novembre 2018
-
Messages postés
60
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
7 novembre 2018
-
Bonjour,

Je souhaite afficher un tableau des dépense publique par bordereau , j'aimerais donc afficher une colonne qui contient le montant du présent bordereau , ex : n°10, et une autre colonne qui affiche le totale des bordereaux antérieurs , ex : de 1 à 9.
voila mon code : 
$reqtt = $db->query('SELECT article, chapitre, date,  SUM(montant) AS parchapitre FROM depense WHERE num_borde = "'.$num_borde.'" GROUP BY chapitre, article ');
   while( $resultt = $reqtt->fetch()){
             
     echo '<tr>';    
   echo '<td>'.$resultt['chapitre'].' </td>';
   echo '<td>'.$resultt['article'].'</td>'; 
    echo '<td>'.number_format($resultt['parchapitre'],2).'</td>';
      echo '<td>'.$resultt['date'].'</td>';
       }
     $reqtt2 = $db->query('SELECT article, chapitre, date,  SUM(montant) AS anterieur FROM depense WHERE num_borde < "'.$num_borde.'" GROUP BY chapitre, article ');  
        while( $resultt2 = $reqtt2->fetch()){ 
          echo '<td>'.number_format($resultt2['anterieur'],2).' </td>'; 
            echo '</tr>';
        }

mais sa marche pas .
ce que je veux , c'est soit afficher les deux résultat avec une seule requête (c'est bcp mieux), soit , j'affiche un tableau avec deux requête différente.
voilà ce que ça donne , et je veux mettre les cellules souligné en rouge, à la place de la flèche

merci.

2 réponses

Messages postés
31135
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 janvier 2021
3 202
Bonjour,

Un truc du genre peut-être
$sql = "SELECT Q.article
              , Q.chapitre
              , Q.date  
              ,SUM(Q.montant_actuel) AS  parchapitre
              ,SUM(Q.montant_prec) AS anterieur 
        FROM (
          SELECT article
                , chapitre
                , date  
                ,IF(num_borde = '$num_borde', montant,0 ) as montant_actuel
                ,IF(num_borde < '$num_borde', montant,0 ) as montant_prec
          FROM depense 
         ) Q
         WHERE Q.num_borde <= '$num_borde' 
          GROUP BY Q.chapitre, Q.article ";

Cordialement, 
Jordane                                                                 
Messages postés
60
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
7 novembre 2018
1
Bonjour ,
merci de me répondre ,
la lettre Q correspond bien au nom de la table ?
et comment boucler sur cette requête ?
Messages postés
31135
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 janvier 2021
3 202 >
Messages postés
60
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
7 novembre 2018

La table "dérivée" que j'ai créé pour la sous-requête.
J'ai mis une lettre au pif .. on aurait pu l’appeler "toto" ou "truc" ... ça aurait fait pareil :-)
Messages postés
60
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
7 novembre 2018
1 >
Messages postés
31135
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 janvier 2021

ah je comprend , je test tt de suite
merci d'avoir pris le temps
Messages postés
60
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
7 novembre 2018
1 >
Messages postés
31135
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 janvier 2021

sa marche pas
Column not found: 1054 Champ 'Q.num_borde' inconnu dans where clause'
Messages postés
31135
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 janvier 2021
3 202 >
Messages postés
60
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
7 novembre 2018

Ah oui
Faut rajouter la colonne num_borde dans le sous select
Messages postés
60
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
7 novembre 2018
1
pour ceux que sa intéresse j'ai résolu mon probleme :
SELECT SUM(IF(num_borde = "'.$num_borde.'",montant,0)) AS present,  
       SUM(IF(num_borde < "'.$num_borde.'",montant,0)) AS anterieur,
       article, chapitre, num_borde, date
FROM depense GROUP BY chapitre, article