Grouper les donnees provenant d'une requete

Fermé
bamdji - 23 oct. 2017 à 18:24
DandypunkII Messages postés 70 Date d'inscription jeudi 28 février 2013 Statut Membre Dernière intervention 5 octobre 2021 - 1 nov. 2017 à 06:50
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

DandypunkII Messages postés 70 Date d'inscription jeudi 28 février 2013 Statut Membre Dernière intervention 5 octobre 2021
1 nov. 2017 à 06:50
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