Jointure de sous-requête SQL avec requête externe

Jointure De Sous Requete Sql Avec Requete Externe



Lorsqu'il s'agit de travailler avec des bases de données relationnelles, vous devez maîtriser la manipulation et la combinaison des requêtes pour effectuer les tâches que vous souhaitez. C'est pourquoi chaque moteur de base de données relationnelle implémente sa version du langage SQL en essayant de fournir des fonctionnalités, une efficacité et une facilité d'utilisation exceptionnelles à ses utilisateurs.

Les sous-requêtes sont l'une des fonctionnalités les plus puissantes de SQL. Les sous-requêtes sont un ensemble de requêtes imbriquées dans une requête plus grande et plus complexe. Les sous-requêtes vous permettent de récupérer les données ou d'effectuer des opérations plus complexes en tant qu'entité unique.







Nous pouvons utiliser les sous-requêtes pour effectuer le filtrage, le tri, l'agrégation des données sur plusieurs tables, etc.



Cependant, une autre fonctionnalité cachée sous les sous-requêtes SQL est connue sous le nom de jointures de sous-requêtes. Celles-ci sont similaires aux sous-requêtes ; à la place, ce sont des jointures qui vous permettent d'utiliser les sous-requêtes dans une requête externe pour joindre les tables ensemble.



Si votre tête tourne, ne vous inquiétez pas car les jointures de sous-requêtes peuvent être difficiles à maîtriser, surtout au début. Cependant, ce didacticiel tente de décomposer les jointures de sous-requête en étapes élémentaires sans laisser trop de place au hasard.





Gardez à l'esprit que nous supposons que vous n'êtes pas nouveau dans SQL, les jointures SQL, les sous-requêtes SQL, etc. Cependant, si vous l'êtes, consultez nos tutoriels sur les sujets pour en savoir plus.

Maîtrisez les jointures externes SQL

Si vous voulez comprendre comment travailler avec les jointures de sous-requête, apprendre à travailler avec les jointures externes est un facteur clé.



Si vous n'êtes pas familier, une jointure externe SQL vous permet de récupérer toutes les lignes d'une table et les lignes correspondantes de la seconde table. C'est un peu plus complexe que cela, y compris la jointure externe gauche, la jointure externe droite, la jointure externe complète, etc.

Dans une jointure externe gauche SQL, la requête renvoie toutes les lignes de la table de gauche et les lignes correspondantes de la table de droite. La requête inclut les valeurs NULL dans les colonnes résultantes s'il n'y a pas de lignes correspondantes dans la table de droite.

Dans le cas d'une jointure externe droite, la requête renvoie toutes les lignes de la table de droite mais uniquement les lignes correspondantes de la table de gauche. De même, la requête inclut les valeurs NULL s'il n'y a pas de lignes correspondantes dans la table de gauche.

Enfin, nous avons la jointure externe complète. Cette jointure renvoie toutes les lignes des tables de droite et de gauche et les valeurs NULL pour tous les enregistrements non correspondants.

Jointures de sous-requête SQL

Maintenant que nous comprenons les sous-requêtes SQL, parlons des jointures de sous-requêtes. Les jointures de sous-requêtes nous permettent d'utiliser les sous-requêtes d'une requête externe pour joindre les tables.

Si vous demandez, c'est ça? Oui, c'est tout ce que font les jointures de sous-requêtes.

Pour mieux illustrer cela, prenez l'exemple de syntaxe suivant qui est illustré dans ce qui suit :

SÉLECTIONNER *
DE table1
JOINTURE EXTERNE GAUCHE (
SELECT colonne1, colonne2
DE table2
) AS sous-requête
ON table1.column3 = subquery.column1 ;


Dans la syntaxe précédente, nous sélectionnons toutes les colonnes de la table 1 à l'aide d'une jointure externe gauche pour la joindre à une sous-requête. Le rôle de la sous-requête est de récupérer les colonnes définies de la table 2. Nous la joignons ensuite à la table 1 à condition que la colonne 2 de la table 1 et la colonne 1 de la sous-requête.

Exemple pratique :

Théoriquement, cela semble moins intuitif mais prenons un scénario réel en prenant la base de données Sakila.

Supposons que nous voulions récupérer la liste de tous les films de la base de données et leurs langues respectives. Les langues des films sont stockées dans la table des langues et les noms des films sont stockés dans la table des films.

Cependant, la table film a une clé étrangère appelée la colonne 'language_id' de la table language. Par conséquent, nous pouvons utiliser une jointure de sous-requête avec une jointure externe gauche pour joindre les deux tables, comme illustré dans la requête suivante :

SELECT f.titre, l.nom AS langue
DU film f
JOINTURE EXTERNE GAUCHE (
SELECT langue_id, nom
DE la langue
) AS l
ON f.language_id = l.language_id ;


Dans l'exemple de requête précédent, nous sélectionnons la colonne title de la table film et la colonne name de la table language.

Nous utilisons ensuite une sous-requête pour sélectionner le language_id et la colonne de nom dans la table des langues. L'étape suivante consiste à le joindre à la table film à condition que le language_id de la table film soit égal au language_id de la table language.

Pour s'assurer que tous les films sont inclus dans le résultat, nous devons utiliser la jointure externe gauche qui se compose de tous les résultats de la table de gauche qui, dans ce cas, est la table des films.

Un exemple de sortie est le suivant :


Nous pouvons également faire la même chose avec une jointure externe droite. La syntaxe est la suivante :

SÉLECTIONNER *
DE table1
JOINT EXTERNE DROIT (
SELECT colonne1, colonne2
DE table2
) AS sous-requête
ON table1.column3 = subquery.column1 ;


Cela se comporte de la même manière mais inclut tous les enregistrements de la table de droite même s'il n'y a pas d'enregistrements correspondants.

Choses utiles à savoir

Il est bon de comprendre que même si les jointures de sous-requête sont incroyablement utiles et peuvent optimiser votre flux de travail, utilisez-les avec prudence.

Par exemple, évitez d'utiliser les jointures de sous-requête avec un ensemble de données volumineux. En effet, ils peuvent renvoyer les enregistrements volumineux susceptibles d'avoir un impact sur les performances de la base de données.

Envisagez d'utiliser les outils d'analyse de requête avant d'exécuter des jointures de sous-requête.

Conclusion

Ce didacticiel a exploré les principes fondamentaux de l'utilisation des sous-requêtes et des jointures de sous-requêtes dans SQL. À la fin de ce didacticiel, vous comprenez maintenant comment utiliser les jointures de sous-requête, pourquoi vous devrez peut-être les utiliser et un exemple pratique de la façon dont elles peuvent vous aider dans votre flux de travail.