Partage
  • Partager sur Facebook
  • Partager sur Twitter

[WDSQL] SUM d'un SELECT

Sujet résolu
    10 août 2017 à 12:01:50

    Salut à tous,

    je suis actuellement à la recherche d'une solution pour effectuer des sommes dans mes requêtes SQL.

    Pour faire simple, dans la table concernée il y a des champs qui contiennent des tableaux de 5 valeurs, c'est ps top mais c'est un choix qui a été fait il y a plus de 20 ans dans la boite... Bref il faudrait que j'aditionne la somme de vente pour la colonne 1 de PVTTC lorsqu'il y a un code TVA dans le colonne 1 de CODETVA.
    L'idéal serait d'avoir le résultat final, mais je n'arrive pour le moment même pas à n'additionner que les PVTTC[1] quand CODETVA[1] n'est pas vide.

    Voici la requête que j'ai pour le moment:

    SELECT COUNT(PVTTC) AS nbVentes,
    SUM(PVTTC[1]) AS totalVente_1
    FROM VENTE
    WHERE DATEVENTE BETWEEN '0101' AND '0531'

    Merci à tous pour votre aide ;)

    -
    Edité par Benzouye 10 août 2017 à 13:41:25

    • Partager sur Facebook
    • Partager sur Twitter

    </radiax>

      10 août 2017 à 13:03:17

      Bonjour,

      Quel SGBD utilises-tu ? Car je ne connais pas de SGBD gérant des tableaux de valeurs dans une colonne à part PostGreSQL ?

      Radiax18 a écrit:

      il y a des champs qui contiennent des tableaux de 5 valeurs

      Le 5 est fixe ?

      -
      Edité par Benzouye 10 août 2017 à 13:07:21

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        10 août 2017 à 13:30:53

        Merci de prendre le temps de me répondre Benzouye !

        Le SGBD est WDSQL de WinDev :'( C'est clairement à fuir d'autant plus que beaucoup de fonctionnalités SQL ne sont pas disponibles...

        La table des ventes contient diverses informations comme la date, le vendeur ainsi que des tableaux de 5 cases. Ces 5 cases existent quoi qu'il en soit mais elles restent nulles si on a pas besoin d'y mettre des informations. Parmi elles se trouve PVTTC est CODETVA. PVTTC contient le prix de l'article ainsi que le montant des paiements, quant à CODETVA, il est rempli que si la case PVTTC du même chiffre concerne la vente d'un article et non un règlement (je sas c'est bizarre). Je doit donc additionner les champs PVTTC accessible avec PVTTC[n] que si CODETVA[n] est lui aussi rempli.

        • Partager sur Facebook
        • Partager sur Twitter

        </radiax>

          10 août 2017 à 13:45:13

          Je ne connais pas du tout WDSQL, mais ne peux-tu pas faire 5 requêtes du coup ? Par exemple avec un UNION pour commencer :

          SELECT
          	'1',
          	COUNT(PVTTC) AS nbVentes,
          	SUM(PVTTC[1]) AS totalVente
          FROM VENTE
          WHERE
          	DATEVENTE BETWEEN '0101' AND '0531'
          	AND CODETVA[1] IS NOT NULL
          
          UNION
          
          SELECT
          	'2',
          	COUNT(PVTTC) AS nbVentes,
          	SUM(PVTTC[2]) AS totalVente
          FROM VENTE
          WHERE
          	DATEVENTE BETWEEN '0101' AND '0531'
          	AND CODETVA[2] IS NOT NULL
          
          UNION
          
          SELECT
          	'3',
          	COUNT(PVTTC) AS nbVentes,
          	SUM(PVTTC[3]) AS totalVente
          FROM VENTE
          WHERE
          	DATEVENTE BETWEEN '0101' AND '0531'
          	AND CODETVA[3] IS NOT NULL
          
          UNION
          
          SELECT
          	'4',
          	COUNT(PVTTC) AS nbVentes,
          	SUM(PVTTC[4]) AS totalVente
          FROM VENTE
          WHERE
          	DATEVENTE BETWEEN '0101' AND '0531'
          	AND CODETVA[4] IS NOT NULL
          
          UNION
          
          SELECT
          	'5',
          	COUNT(PVTTC) AS nbVentes,
          	SUM(PVTTC[5]) AS totalVente
          FROM VENTE
          WHERE
          	DATEVENTE BETWEEN '0101' AND '0531'
          	AND CODETVA[5] IS NOT NULL
          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            10 août 2017 à 15:09:16

            C'est super comme idée, j'ai modifié ta requête comme ceci

            SELECT COUNT(PVTTC[1]) AS nbVentes, SUM(PVTTC[1]) AS totalVente
            FROM VENTE
            WHERE DATEVENTE BETWEEN '0101' AND '0531' AND CODETVA[1] != ''
             
            UNION
             
            SELECT COUNT(PVTTC[2]) AS nbVentes, SUM(PVTTC[2]) AS totalVente
            FROM VENTE
            WHERE DATEVENTE BETWEEN '0101' AND '0531' AND CODETVA[2] != ''
            
            UNION
             
            SELECT COUNT(PVTTC[3]) AS nbVentes, SUM(PVTTC[3]) AS totalVente
            FROM VENTE
            WHERE DATEVENTE BETWEEN '0101' AND '0531' AND CODETVA[3] != ''
             
            UNION
             
            SELECT COUNT(PVTTC[4]) AS nbVentes, SUM(PVTTC[4]) AS totalVente
            FROM VENTE
            WHERE DATEVENTE BETWEEN '0101' AND '0531' AND CODETVA[4] != ''
             
            UNION
             
            SELECT COUNT(PVTTC[5]) AS nbVentes, SUM(PVTTC[5]) AS totalVente
            FROM VENTE
            WHERE DATEVENTE BETWEEN '0101' AND '0531' AND CODETVA[5] != ''

            J'obtient donc les bons chiffres séparés en 5 parties et 3 colonnes. La première colonne  est le numéro d'enregistrement (1, 2, 3, 4 et 5), la seconde le nombre de ventes faites sur la colonne 1 de PVTTC et la troisième colonne contient le gain total des ventes de la première colonne PVTTC. Ceci est répété 5 fois pour les 5 cases des tableaux de la DB.

            Maintenant comment faire pour regrouper le tout en 1 ligne contenant le nombre de ventes et le total des ventes ?

            • Partager sur Facebook
            • Partager sur Twitter

            </radiax>

              10 août 2017 à 15:27:04

              Radiax18 a écrit:

              comment faire pour regrouper le tout en 1 ligne contenant le nombre de ventes et le total des ventes ?

              Je traiterai le retour de la requête côté application, dans un tableau (array), mais je ne sais pas si cela est possible côté WinDev ou si tu as les droits pour le faire ...

              Après, si tu veux tout faire côté SQL, tu peux tenter de bricoler la requête pour faire des additions ... mais ce n'est pas top ... et je ne sais pas si tu peux faire des procédures SQL avec des boucles dans WDSQL ...

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                10 août 2017 à 15:51:37

                Je ne pense pas que ce soit possible de faire des boucles depuis WDSQL en effet.
                Au moins maintenant j'arrive à avoir des chiffres juste donc j'ai juste à faire la somme avec un calculatrice pour avoir le total. J'avais besoin de ça pour car les j'ai fait un module pour transférer les ventes vers une nouvelle DB plus propre sur laquelle la requête s'est faite sans problème. Ca prends pus de temps à la calculatrice mais au moins je peux comparer.

                Merci beaucoup pour ton aide Benzouye !

                EDIT: Je viens de trouver une option qui permet de calculer la somme d'une colonne depuis la fenêtre d'affichage ! Problème 100% résolu ;) (faut bien trouver un point positif à WinDev)

                -
                Edité par Radiax18 10 août 2017 à 16:19:49

                • Partager sur Facebook
                • Partager sur Twitter

                </radiax>

                [WDSQL] SUM d'un SELECT

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown