< Précédent | Suivant >

Ajout de jointures, d'une condition de requête et d'une clause GROUP BY

Au cours de cet exercice, vous allez restreindre les résultats de la requête aux clients qui louent actuellement des films et aux filmes qui sont loués actuellement. Vous allez également limiter les résultats de la requête à un client spécifique dont vous indiquez le nom lors de l'exécution de la requête. Enfin, vous allez organiser les résultats de la requête en fonction du jour de la semaine où les films doivent être restitués. Pour chaque jour de la semaine, vous allez classer les films par titre de film puis, pour chaque titre de film, vous allez les classer par nom de client.

Jointure de tables

Une opération de jointure permet l'extraction de données à partir de plusieurs tables en fonction de valeurs de colonnes concordantes. Les données des tables sont rassemblées en un seul résultat. Deux jointures sont nécessaires pour cette requête. Le résultat de la requête doit inclure les entrées des tables RENTALS et CUSTOMERS qui ont des valeurs de colonne CUST_ID concordantes. Le résultat de la requête doit également inclure les entrées des tables RENTALS et VIDEOS qui ont des ID de film concordants (valeurs de colonne VID_ID).

Pour effectuer une jointure entre deux tables, procédez comme suit :

  1. Dans le panneau Tables, cliquez à l'aide du bouton droit de la souris sur l'en-tête de la table R, puis sélectionnez Créer une jointure dans le menu contextuel.
  2. Dans la fenêtre Créer une jointure sous Source, effectuez les sélections suivantes :
    1. Dans la liste Table (alias), cliquez sur RENTALS (R).
    2. Dans la liste Colonne, cliquez sur CUST_ID.
  3. Sous Cible, effectuez les sélections suivantes :
    1. Dans la liste Table (alias), cliquez sur CUSTOMERS (C).
    2. Dans la liste Colonne, cliquez sur CUST_ID.
  4. Cliquez sur OK. Un connecteur de jointure apparaît entre les deux colonnes.
  5. Dans le panneau Tables, faites glisser le pointeur à partir de la colonne VID_ID de la table R (RENTALS) vers la colonne VID_ID de la table V (VIDEOS).
Consultez le panneau Source SQL pour voir les jointures dans le code source :
   FROM
      XMLTEST.VIDEOS AS V JOIN XMLTEST.RENTALS AS R JOIN XMLTEST.CUSTOMERS AS C
      ON R.CUST_ID = C.CUST_ID ON V.VID_ID = R.VID_ID

Dans le panneau Tables, les deux jointures ont été créées comme présenté ici :

Jointures de tables

Vous pouvez changer le type de jointure (par exemple, transformer une jointure interne en une jointure externe complète, droite ou gauche) dans le panneau Tables en cliquant à l'aide du bouton droit de la souris sur le connecteur, en sélectionnant Indiquer le type de jointure dans le menu contextuel, puis en sélectionnant le type de jointure souhaité dans la fenêtre Indiquer la jointure.

Création d'une condition de requête

Ensuite, une condition de requête est nécessaire pour que la requête puisse extraire uniquement les lignes de résultat comportant le nom du client indiqué. Pour ajouter des conditions à la requête, vous devez utiliser la page Conditions du panneau Conception.

Pour créer une condition de requête, procédez comme suit :

  1. Cliquez sur l'onglet Conditions pour voir la page Conditions.
  2. Dans la première ligne, cliquez deux fois sur la cellule de la colonne Colonne, puis cliquez sur C.NAME dans la liste.
  3. Dans la même ligne, cliquez deux fois sur la cellule de la colonne Opérateur, puis cliquez sur l'opérateur =.
  4. Dans cette ligne, cliquez deux fois sur la cellule de la colonne Valeur, puis entrez :custName. Le caractère deux points (:) suivi d'un nom de variable correspond à la syntaxe SQL d'une variable qui sera remplacée par une autre lors de l'exécution de la requête. Vous verrez comment cela fonctionne lors de l'exécution de la requête SQL.
La page Conditions a maintenant l'aspect de l'illustration suivante :

Panneau Conception - Page Conditions

Ajout d'une clause GROUP BY

Vous allez regrouper la requête en fonction du jour de la semaine, puis par titre et enfin par nom de client.
Pour créer une clause GROUP BY dans le générateur SQL, utilisez la page Groupes dans le panneau Conception. Dans cette vue, vous pouvez également créer des regroupements plus avancés dans votre résultat de requête, en utilisant des expressions de colonne, des groupes imbriqués, des ensembles de regroupement (dans DB2 uniquement) et des fonctions de regroupement ROLLUP et CUBE (dans Oracle et DB2).

Pour ajouter une clause GROUP BY :

  1. Dans le panneau Conception, cliquez sur l'onglet Groupes.
  2. Ajoutez la fonction DAYOFWEEK en tant que colonne de résultat.
    1. Dans la table Colonne, cliquez deux fois sur la première ligne, cliquez sur Générer l'expression dans la liste, puis appuyez sur la touche Entrée.
    2. Sur la page Types d'expressions de l'assistant, cliquez sur Fonction, puis sur Suivant. La page Générateur d'expression de fonction s'affiche.
    3. Dans la liste Sélectionnez une catégorie de fonction, cliquez sur Date et heure.
    4. Dans la liste Sélectionnez une fonction, cliquez sur DAYOFWEEK.
    5. Dans la liste Sélectionnez une signature de fonction, cliquez sur DAYOFWEEK(DATE) --> INTEGER. La signature de fonction indique que la fonction requiert un argument.
    6. Dans la colonne Valeur de la table des arguments, cliquez sur la cellule puis sur R.DATE dans la liste et pour finir, appuyez sur la touche Entrée.
    7. Cliquez sur Terminer. La fonction DAYOFWEEK s'affiche dans la première cellule de la table Colonne.
  3. Dans la deuxième ligne de la table Colonne, sélectionnez la colonne V.TITLE dans la liste, puis dans la troisième ligne, sélectionnez C.NAME. La page Groupes a maintenant l'aspect de l'image suivante :

    Panneau Conception - Page Groupes

La requête est maintenant terminée. Elle a l'aspect suivant dans le générateur SQL :

Requête terminée

< Précédent | Suivant >

Commentaires en retour