Le coding de base des jointures SQL est simple ; voici comment procéder
Une opération de jointure sur la base de données combine des lignes (c'est-à -dire
des enregistrements) provenant de deux ou plus tables (c'est-à -dire des fichiers)
pour produire une table résultat utilisable ensuite pour d'autres opérations.
DB2 Universal Database for AS/400 (UDB/400) permet les opérations jointes par
l'intermédiaire de plusieurs mécanismes :
- fichiers logiques joints définis en DDS
- les paramètres FILE et FLD de la commande OPNQRYF (Open Query File)
- les clauses FROM et WHERE d'une sous-selection SQL
Parmi toutes ces possibilités, c'est SQL qui offre le plus de souplesse et la
syntaxe la plus simple. Et, comme SQL est aussi une interface base de données
stratégique d'IBM pour UDB/400, il est d'autant plus intéressant de savoir coder
une jointure SQL. Comme cet article le démontre, il est facile de démarrer avec
des jointures.
Examinons l’exemple de jointure classique par excellence : il s’agit de combiner
chaque ligne d’une table ventes à la ligne client associée. La figure 1 illustre
la table Customer (Clients) et la figure 2 la table Sale (Ventes). Pour joindre
des lignes associées de ces tables, on utilise une instruction SQL semblable à
la suivante :
Select OrderID, Customer.CustID,
Name
From Customer Join
Sale
On Customer.CustID
= Sale.CustID
Le prédicat qui suit le mot-clé On (Customer.CustID = Sale.CustID) est
appelé condition de jointure.
Dans cet exemple, j’ai utilisé un subselect (sous-sélection) très simple
(la partie d’une instruction SQL qui commence par le mot-clé Select et comprend
une clause From pour définir la ou les tables ou la ou les vues qui fourniront
les lignes du jeu de résultats). Dans mon exemple, la clause From utilise l’opération
SQL Join pour produire la table résultat illustrée figure 3. Ce n’est pas plus
compliqué !
C’est SQL qui offre le plus de souplesse et la syntaxe la plus simple
Avant d’aborder la syntaxe des jointures, j’aimerais mentionner rapidement où
l’on peut utiliser un subselect et, par conséquent, où les jointures sont autorisées.
Tout d’abord, on peut entrer une instruction Select en utilisant le produit SQL
interactif d’IBM, ou tout autre outil ad hoc supportant SQL. Les résultats d’une
instruction Select sont, en principe, affichés, imprimés ou copiés dans une autre
table. L’instruction Select permet même de combiner plusieurs subselects en utilisant
des opérations Union et d’ordonner les résultats à l’aide d’une clause Order By.
Je n’explique pas ici l’instruction Select car ce n’est pas essentiel pour comprendre
les jointures SQL. Pour avoir des informations complémentaires, on pourra consulter
les ressources listées dans l’encadré “ Pour en savoir plus ”.
On peut aussi utiliser une instruction Select (et donc un subselect) quand on
définit un curseur SQL dans un programme HLL. Un curseur, que l’on peut
utiliser avec du SQL imbriqué ou en SPL (Stored Procedure Language) SQL, permet
d’atteindre (et, éventuellement, de mettre à jour et de supprimer) certaines lignes
une à une. L’important à retenir pour l’instant est qu’un curseur défini avec
une jointure est toujours en lecture seule.
On peut aussi définir une vue en lecture seule au moyen d’un subselect. Un subselect
peut aussi apparaître dans les endroits suivants :
- dans une instruction Insert qui copie des valeurs d’une ou plusieurs tables
et les ajoute à une autre table
- dans la clause Set d’une instruction Update pour attribuer une nouvelle
valeur à une colonne
- dans le cadre d’une condition de recherche avec la clause Where de l’une
quelconque des instruction de manipulation de données
Téléchargez cette ressource
Travail à distance – Guide IT et Métiers
Le travail à distance met à l'épreuve la maturité numérique des entreprises en termes de Cybersécurité, d'espace de travail, de bien-être des collaborateurs, de communication et gestion de projet à distance. Découvrez, dans ce nouveau Guide Kyocera, quels leviers activer prioritairement pour mettre en place des solutions de travail à domicile efficaces, pérennes et sécurisées.