DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Comment le faire / Editeur de requêtes
  • Présentation
  • Requête SQL TOP 10 sous l'éditeur de requêtes
  • Requête SQL avec un "TOP n" en programmation
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Comment faire une requête SQL pour obtenir un TOP 10 ?
Présentation
Pour effectuer un TOP 10 (ou les 10 meilleurs d'une sélection) d'enregistrements provenant d'un fichier de données, il est possible d'effectuer une boucle de parcours puis d'utiliser une condition pour sortir de la boucle au bout du 10ème passage.
Un moyen plus efficace pour effectuer ce TOP 10 consiste à utiliser une requête SQL.
Nous allons voir comment effectuer un TOP 10 en utilisant :
Ben entendu, il est possible d'appliquer cette méthode à un TOP 3, ou tout autre TOP correspondant à une sélection des N meilleurs ou moins bons résultats.
Requête SQL TOP 10 sous l'éditeur de requêtes
Cette requête permet de réaliser un TOP 10, c'est-à-dire les 10 meilleurs résultats d'une sélection d'enregistrements d'un fichier de données.
Dans cet exemple, nous réalisons le TOP 10 des 10 meilleures commandes.
Les différentes étapes pour créer cette requête SQL avec un filtre sont les suivantes :
  1. Cliquez sur Nouveau parmi les boutons d'accès rapide.
    • Dans la fenêtre qui s'affiche, cliquez sur "Requêtes".
    • L'assistant de création d'une requête se lance.
  2. Choisissez de créer une requête de sélection (option "Sélection (SELECT)").
    Assistant de création de requêtes

    Passez à l'étape suivante de l'assistant.
  3. La fenêtre de description de la requête s'affiche.
  4. Donnez un nom et un libellé à la requête :
    Nom et libellé de la requête
  5. Dans la zone de gauche de la fenêtre de description, choisissez les rubriques du fichier de données à manipuler (dans notre exemple, le fichier COMMANDE et les rubriques NumCommande et TotalTTC).
  6. Double-cliquez sur les noms des rubriques pour les ajouter dans la liste des rubriques de la requête :
    Sélection des rubriques
  7. Un TOP est basé sur un tri. Dans l'exemple, nous allons trier les commandes sur la rubrique TotalTTC par ordre décroissant. Pour effectuer ce tri, dans la partie droite de l'éditeur, cliquez sur le bouton "Trier".
    Tri
  8. Dans le menu qui s'affiche, sélectionnez "Trier sur la rubrique sélectionnée".
  9. Dans la fenêtre qui s'affiche :
    • Sélectionnez l'ordre de tri ("Décroissant" dans notre exemple).
      Choix de l'ordre de tri
    • Validez.
  10. Pour effectuer le TOP, dans la partie droite de l'éditeur, cliquez sur le bouton "Les n premiers...".
    N premiers
  11. Dans la fenêtre qui s'affiche :
    • Sélectionnez l'option "Sélectionner les premiers enregistrements (TOP)".
    • Saisissez le nombre d'enregistrements à sélectionner (dans notre exemple, 10 pour un TOP 10).
      Configuration du TOP
  12. Validez la fenêtre.
  13. Validez la fenêtre de description de la requête. La requête apparaît sous l'éditeur :
    Affichage de la requête sous l'éditeur
  14. Enregistrez la requête (Ctrl + S).
  15. Visualisez le code SQL en appuyant sur la touche F2 :
    Code SQL de la requête
  16. Testez la requête (GO dans les boutons d'accès rapide).
  17. La requête peut être exécutée dans le programme à l'aide de la fonction HExécuteRequête.
Requête SQL avec un "TOP n" en programmation
Les requêtes SQL peuvent être écrites directement par programmation dans le code WLangage. Pour cela, il faut :
  1. Créer une variable de type Source de données pour représenter la requête en exécution.
  2. Créer une variable de type chaîne de caractères pour contenir le code SQL de la requête et écrire le code SQL dans cette variable.
  3. Exécuter la requête SQL à l'aide de la fonction HExécuteRequêteSQL.
  4. Parcourir le résultat à l'aide des fonctions HLITXXX.
Exemple de code
Src1 est une Source de Données
sCodeSQL est une chaîne

// Sélection des 5 meilleurs clients basés sur la somme des commandes ...
sCodeSQL = [
SELECT TOP 5 
CLIENT.NumClient AS NumClient,
CLIENT.NomClient AS NomClient,
CLIENT.Ville AS Ville,
SUM(COMMANDE.TotalTTC) AS la_somme_TotalTTC
FROM 
CLIENT,
COMMANDE
WHERE 
CLIENT.NumClient = COMMANDE.NumClient

GROUP BY 
CLIENT.NumClient,
CLIENT.NomClient,
CLIENT.Ville
ORDER BY 
la_somme_TotalTTC DESC
]

HExécuteRequêteSQL(Src1, hRequêteDéfaut, sCodeSQL)
POUR TOUT Src1
Trace(Src1.NumClient, Src1.NomClient, Src1.Ville)
FIN
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale