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

Résolu
salim_1305 Messages postés 70 Statut Membre -  
salim_1305 Messages postés 70 Statut Membre -
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

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    1. salim_1305 Messages postés 70 Statut Membre 1
       
      Bonjour ,
      merci de me répondre ,
      la lettre Q correspond bien au nom de la table ?
      et comment boucler sur cette requête ?
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > salim_1305 Messages postés 70 Statut Membre
         
        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
      2. salim_1305 Messages postés 70 Statut Membre 1 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ah je comprend , je test tt de suite
        merci d'avoir pris le temps
        0
      3. salim_1305 Messages postés 70 Statut Membre 1 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        sa marche pas
        Column not found: 1054 Champ 'Q.num_borde' inconnu dans where clause'
        0
      4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > salim_1305 Messages postés 70 Statut Membre
         
        Ah oui
        Faut rajouter la colonne num_borde dans le sous select
        0
  2. salim_1305 Messages postés 70 Statut Membre 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
    
    0