Grouper les donnees provenant d'une requete

bamdji -  
DandypunkII Messages postés 70 Statut Membre -
bonjour je galère un concept en développement et bien je développe une application sous windev 18 et vu que je suis un petit bleu avec ce langage j'aimerais savoir s'il était possible de regrouper les données provenant d'une requête comme la fonction group by avec sql
s'il y a une manière de le faire faites le moi savoir s'il vous plait en postant vos exemples de programmation
merci

1 réponse

  1. DandypunkII Messages postés 70 Statut Membre
     
    Bonjour,
    Prenons l'analyse suivante :

    Nous désirons avoir la somme des achats des clients et leur nombre d'achats.
    En SQL nous aurions :
    SELECT 
      CLIENTS.PK_CLIENT AS CLIENT,  
      CLIENTS.NDX_NomClient AS Nom,  
      SUM(FACTURE_CLIENTS.Total) AS SommeDesAchats
    FROM 
      CLIENTS,  
      FACTURE_CLIENTS
    WHERE 
      CLIENTS.PK_CLIENT = FACTURE_CLIENTS.FK_CLIENT
    
    GROUP BY 
      CLIENTS.PK_CLIENT,  
      CLIENTS.NDX_NomClient
    ORDER BY 
      PK_CLIENT ASC
    

    et
    SELECT 
      CLIENTS.PK_CLIENT AS CLIENT,  
      CLIENTS.NDX_NomClient AS Nom,  
      COUNT(FACTURE_CLIENTS.PK_FACTURE_CLIENTS) AS NbFacture
    FROM 
      CLIENTS,  
      FACTURE_CLIENTS
    WHERE 
      CLIENTS.PK_CLIENT = FACTURE_CLIENTS.FK_CLIENT
    
    GROUP BY 
      CLIENTS.PK_CLIENT,  
      CLIENTS.NDX_NomClient
    ORDER BY 
      CLIENT ASC
    

    Avec Windev 2 options s'offrent à toi :
    -Gérer ces requêtes en "mode texte" dans ton code via SQLExec (https://doc.pcsoft.fr/fr-FR/?3072007&name=SQLExec&verdisp=180%29
    -Utiliser l'éditeur de requêtes.
    Pour cela il faut créer une nouvelle requête (Nouveau/Requête).
    Tu as 6 options disponibles :
    Select, SQL, Ajout, Union, Modification et Suppression.
    Nous nous intéresserons à l'option Select.

    Dans la zone 1 sélectionne les colonnes désirées et place les dans la zone 2 soit via un double clic, soit via les flèches (6)
    Une fois cela fait sélectionne dans la zone 2 la colonne sur laquelle tu veux faire le calcul. FACTURE_CLIENT.Total (resp FACTURE_CLIENT.PK_FACTURE_CLIENT.)
    La zone 3 sert à affiner la recherche. Il suffit de sélectionner Somme (resp compter), la modification se fait en zone 2.
    Tu peux modifier si tu le désire le nom des colonnes qui sera utilisé(le AS dans SQL) via la zone 4.
    Dans la zone 5, tu as la description de ta requête en langage naturel ou en SQL.
    On valide et ta requête est disponible. Tu pourras la tester via le "GO".

    Cerise sur le gâteau.Tu désires voir apparaître les clients qui n'ont pas de factures.
    En SQL tu écrirais :
    SELECT 
      CLIENTS.PK_CLIENT AS CLIENT,  
      CLIENTS.NDX_NomClient AS Nom,  
      SUM(FACTURE_CLIENTS.Total) AS SommeDesAchats
    FROM 
      CLIENTS
      LEFT OUTER JOIN
      FACTURE_CLIENTS
      ON CLIENTS.PK_CLIENT = FACTURE_CLIENTS.FK_CLIENT
    GROUP BY 
      CLIENTS.PK_CLIENT,  
      CLIENTS.NDX_NomClient
    ORDER BY 
      PK_CLIENT ASC
    

    Avec Windev :

    Un double clic sur "Jointure" et il suffit de cocher la case qui va bien.
    0