SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

    Bonjour,

    J'ai créé une requête (voir en bas de page), afin de pouvoir afficher dans un template PDF les valeurs d'un tableau.

    La requête ci-dessous affiche/regroupe bien les catégories (Boisson, Divers, Vin), mais ne calcule pas la somme des articles et des prix TTC :

    Code:
    À facturer 
    Boisson | 10 | 25.00 |
    Divers | 20 | 112.00 |
    Vin | 2 | 20.20 |

    J'ai effectivement deux records de la catégorie Boisson dans la BDD :

    Code:
    Boisson | 10 | 25.00 |
    Boisson | 10 | 25.00 |

    Le résultat de la catégorie Boisson devrait donc être :

    Code:
    À facturer
    Boisson | 20 | 50.00 |
    Divers | 20 | 112.00 |
    Vin | 2 | 20.20 |

    Je souhaiterais donc faire la somme des articles (fab_booking_44_repeat.nombre_art) et du prix TTC (fab_booking_44_repeat.prix_ttc).

    J'ai essayé différentes variantes telles que :

    Code:
    array('fab_booking.id', 'fab_catering_categories.categories', 'SUM(fab_booking_44_repeat.nombre_art)', 'SUM(fab_booking_44_repeat.prix_ttc)'))
    
    ou encore
    
    array('fab_booking.id', 'fab_catering_categories.categories', SUM('fab_booking_44_repeat.nombre_art'), SUM('fab_booking_44_repeat.prix_ttc')))
    mais sans succès.

    La solution doit être triviale, mais étant encore un débutant, cela dépasse mes capacités actuelles.

    Merci d'avance pour vos suggestions et conseils.

    Marc

    Requête

    Code PHP:
    $bookingid JRequest::getVar('rowid');
    $db JFactory::getDbo();
       
    $query $db->getQuery(true);
       
    $query
          
    ->select (array('fab_booking.id''fab_catering_categories.categories''fab_booking_44_repeat.nombre_art''fab_booking_44_repeat.prix_ttc'))    
          ->
    from('fab_booking')
          ->
    leftJoin('fab_booking_44_repeat ON fab_booking.id = fab_booking_44_repeat.parent_id')
          ->
    leftJoin('fab_catering_categories ON fab_booking_44_repeat.categorie = fab_catering_categories.id')
          ->
    having('fab_booking.id = ' $db->quote($bookingid))
          ->
    group('fab_catering_categories.categories');
       
    $db->setQuery($query);
       
    $row $db->loadObjectList();
       echo 
    "<div style='font-family: arial, helvetica, sans-serif; font-size: 11pt;'>";
       foreach (
    $row as $item)
       {
           echo 
    "$item->categories | ";
           echo 
    "$item->nombre_art | ";
           echo 
    "$item->prix_ttc | <br />";
           echo 
    "";
       }
       echo 
    "</div>"

  • #2
    Re : SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

    Bonjour,

    Avant de programmer en php, avez-vous essayé votre requête en phpmyadmin ? En général, c'est une étape qui permet de comprendre les éventuelles erreurs dans les requêtes.

    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Re : SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

      Encore moi,

      Je viens de faire un petit essai dans mon phpmyadmin en créant des tables simplifiés à partir de votre exemple.

      Il m'a jeté sur le group by parce que j'avais mis categories (je l'ai mis en varchar(50)). En remplaçant par fab_catering_categories.id, le group by a mieux fonctionné.

      Peut-être une piste....

      Ma requête sql : j'ai mis 1 dans fab_booking.id, car je n'ai créé qu'une seule commande (un peu fainéant, le gars)
      Code:
      select fab_booking.id, fab_catering_categories.categories, sum(fab_booking_44_repeat.nombre_art), sum(fab_booking_44_repeat.prix_ttc) 
      from fab_booking 
      left Join fab_booking_44_repeat  ON fab_booking.id = fab_booking_44_repeat.parent_id 
      left Join fab_catering_categories ON fab_booking_44_repeat.categorie = fab_catering_categories.id
            where fab_booking.id = 1
            group by fab_catering_categories.id
      Pascal
      Dernière édition par pmleconte à 20/05/2016, 09h33
      If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

      Commentaire


      • #4
        Re : SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

        Envoyé par pmleconte Voir le message
        Encore moi,

        Je viens de faire un petit essai dans mon phpmyadmin en créant des tables simplifiés à partir de votre exemple.

        Il m'a jeté sur le group by parce que j'avais mis categories (je l'ai mis en varchar(50)). En remplaçant par fab_catering_categories.id, le group by a mieux fonctionné.

        Peut-être une piste....

        Ma requête sql : j'ai mis 1 dans fab_booking.id, car je n'ai créé qu'une seule commande (un peu fainéant, le gars)
        Code:
        select fab_booking.id, fab_catering_categories.categories, sum(fab_booking_44_repeat.nombre_art), sum(fab_booking_44_repeat.prix_ttc) 
        from fab_booking 
        left Join fab_booking_44_repeat  ON fab_booking.id = fab_booking_44_repeat.parent_id 
        left Join fab_catering_categories ON fab_booking_44_repeat.categorie = fab_catering_categories.id
              where fab_booking.id = 1
              group by fab_catering_categories.id
        Pascal
        Bonjour Pascal,

        Merci pour votre retour et le temps consacré. En fait, je sais que cela fonctionne avec une requête classique, mais je souhaite passer à Jdatabase

        https://docs.joomla.org/Selecting_da...g_JDatabase/fr

        afin d'être aux normes concernant le traitement des requêtes dans un environnement Joomla. Cette méthode est par ailleurs préconisée depuis la version Joomla 1.6.

        Nénamoins, la documentation est partielle et je me suis dit qu'il doit bien y avoir quelqu'un qui a une expérience avec Jdatabase.

        Merci en tout cas pour votre suggestion !

        Marc

        Commentaire


        • #5
          Re : SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

          Je viens de faire un nouveau petit test avec ma petite base sur mon petit pc.....

          En prenant votre code, j'ai créé un article. Dès que j'ai mis Sum, il m'a envoyé des erreurs de syntaxe.

          J'ai eu le résultat escompté en mettant
          Code:
          'sum(fab_booking_44_repeat.nombre_art) as nombre_art', 
          'sum(fab_booking_44_repeat.prix_ttc) as prix_ttc'
          Pascal
          If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

          Commentaire


          • #6
            Re : SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

            Envoyé par pmleconte Voir le message
            Je viens de faire un nouveau petit test avec ma petite base sur mon petit pc.....

            En prenant votre code, j'ai créé un article. Dès que j'ai mis Sum, il m'a envoyé des erreurs de syntaxe.

            J'ai eu le résultat escompté en mettant
            Code:
            'sum(fab_booking_44_repeat.nombre_art) as nombre_art', 
            'sum(fab_booking_44_repeat.prix_ttc) as prix_ttc'
            Pascal
            Vous êtes un as Pascal ! Cela fonctionne parfaitement. Merci beaucoup, c'est chouette de votre part d'avoir pris le temps de tester tout cela.

            Bonne journée,

            Marc

            Solution
            Code PHP:
            ->select (array('fab_booking.id''fab_catering_categories.categories''sum(fab_booking_44_repeat.nombre_art) as nombre_art''sum(fab_booking_44_repeat.prix_ttc) as prix_ttc')) 
            Dernière édition par ghazal à 20/05/2016, 11h20

            Commentaire


            • #7
              Re : SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

              Salut,
              j'ai suivi avec intérêt cette discussion.
              Je me suis permis de corriger le format du code final pour une meilleure lisibilité.
              Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

              Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

              Commentaire


              • #8
                Re : SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

                Envoyé par ghazal Voir le message
                Salut,
                j'ai suivi avec intérêt cette discussion.
                Je me suis permis de corriger le format du code final pour une meilleure lisibilité.
                Tu as bien fait, merci ghazal !

                Commentaire


                • #9
                  Re : SOMME DE 2 CHAMPS DANS UNE REQUETE JDatabase

                  Content que cela vous ait plu....

                  Merci de mettre le problème à "réglé" (c'est en haut de la discussion, dans outil de discussion).

                  Bon weekend,

                  Pascal
                  If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X