PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

PV

  • Présentation
  • Requête SQL avec une jointure externe vers un fichier de données (éditeur de requêtes)
  • Requête SQL avec une jointure externe en programmation
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Présentation
En langage SQL, une jointure externe permet d'exclure ou d'inclure des enregistrements d'un fichier de données qui ont ou qui n'ont pas de correspondances dans des fichiers liés.
Par défaut, lors de la création d'une requête entre 2 fichiers de données liés, seuls les enregistrements qui ont une correspondance entre les 2 fichiers sont traités. Pour traiter les enregistrements qui n'ont pas de correspondance, il est nécessaire d'ajouter une jointure externe.
Nous allons voir comment effectuer une jointure externe en utilisant :
Requête SQL avec une jointure externe vers un fichier de données (éditeur de requêtes)
Cette requête permet de sélectionner les enregistrements d'un fichier de données (fichier principal) avec une correspondance (jointure) vers un autre fichier de données (fichier secondaire ou fichier lié), sachant que tous les enregistrements du fichier principal n'ont pas obligatoirement de correspondance dans le fichier secondaire.
Dans cet exemple, nous réalisons la sélection des enregistrements du fichier CLIENT (fichier principal) avec la somme des commandes du fichier COMMANDE (fichier secondaire) de chaque client. Certains clients peuvent ne pas avoir de commandes. Il est donc nécessaire d'ajouter dans la requête une jointure externe pour traiter les clients qui n'ont pas de commandes.
Les différentes étapes pour créer cette requête SQL avec une jointure externe sont les suivantes :
  1. Sélectionnez l'option "Fichier .. Nouveau .. Requête". L'assistant de création d'une requête se lance.Cliquez sur Nouveau parmi les boutons d'accès rapide.
    • Dans la roue qui s'affiche, cliquez sur "Requêtes". Dans la fenêtre qui s'affiche, cliquez sur "Requêtes".
    • L'assistant de création d'une requête se lance.
  2. Sélectionnez l'option "Sélectionner (SELECT)" et validez.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 CLIENT et les rubriques NomClient, Société et Ville puis le fichier COMMANDE et la rubrique TOTALHT).
  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. Pour effectuer la somme des commandes, dans la partie droite de l'éditeur, cliquez sur le bouton "Somme". La fenêtre suivante apparaît sous l'éditeur :
    Somme
  8. Validez. La fenêtre de description de la requête est mise à jour :
    Description de la requête
  9. Validez la fenêtre de description de la requête. La requête suivante apparaît sous l'éditeur :
    Affichage de la requête sous l'éditeur
  10. Pour ajouter la jointure externe, double-cliquez sur la zone "Jointure".
    jointure
  11. La fenêtre de description de la jointure est affichée.
  12. Pour sélectionner le sens de la jointure externe, cochez la case "inclure..." correspondant au sens souhaité. Dans notre exemple, les enregistrements du fichier CLIENT qui n'ont pas de commandes sont inclus.
    Définition des jointures
  13. Validez. La fenêtre de description de la requête est mise à jour.
    Description de la requête
  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 une jointure externe 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 de produits dont le prix est supérieur à ...
sCodeSQL = [
SELECT
CLIENT.NomClient AS NomClient,
CLIENT.Societe AS Societe,
CLIENT.Ville AS Ville,
SUM(COMMANDE.TotalHT) AS la_somme_TotalHT
FROM
CLIENT
LEFT OUTER JOIN
COMMANDE
ON CLIENT.NumClient = COMMANDE.NumClient
GROUP BY
CLIENT.NomClient,
CLIENT.Societe,
CLIENT.Ville
]

HExécuteRequêteSQL(Src1, hRequêteDéfaut, sCodeSQL)
POUR TOUT Src1
Trace(Src1.NomClient, Src1.Societe, Src1.la_somme_TotalHT)

FIN
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire