Affichage d'un tableau avec 2 requêtes différente

Résolu/Fermé
salim_1305 Messages postés 60 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 7 novembre 2018 - 13 mars 2017 à 09:54
salim_1305 Messages postés 60 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 7 novembre 2018 - 13 mars 2017 à 14:38
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.
A voir également:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 13/03/2017 à 10:20
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                                                                 
0
salim_1305 Messages postés 60 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 7 novembre 2018 1
Modifié par salim_1305 le 13/03/2017 à 10:23
Bonjour ,
merci de me répondre ,
la lettre Q correspond bien au nom de la table ?
et comment boucler sur cette requête ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > salim_1305 Messages postés 60 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 7 novembre 2018
13 mars 2017 à 10:24
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 :-)
0
salim_1305 Messages postés 60 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 7 novembre 2018 1 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
13 mars 2017 à 10:27
ah je comprend , je test tt de suite
merci d'avoir pris le temps
0
salim_1305 Messages postés 60 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 7 novembre 2018 1 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
13 mars 2017 à 10:48
sa marche pas
Column not found: 1054 Champ 'Q.num_borde' inconnu dans where clause'
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > salim_1305 Messages postés 60 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 7 novembre 2018
13 mars 2017 à 10:50
Ah oui
Faut rajouter la colonne num_borde dans le sous select
0
salim_1305 Messages postés 60 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 7 novembre 2018 1
13 mars 2017 à 14:38
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
0