Le mot-clé OUTER JOIN de MySQL est utilisé pour extraire des enregistrements de deux tableaux, y compris les enregistrements qui n'ont pas de valeurs correspondantes dans les tableaux liés. Il garantit que tous les enregistrements d'un tableau sont inclus dans les résultats et, lorsqu'aucune correspondance n'est trouvée, des NULL sont insérés dans les colonnes du tableau concerné.
Utilisation
OUTER JOIN est utilisé lorsque vous devez inclure toutes les lignes d'un tableau ou des deux tableaux, qu'il y ait ou non une correspondance dans l'autre tableau. Il en existe deux types principaux : LEFT OUTER JOIN (ou simplement LEFT JOIN) et RIGHT OUTER JOIN (ou simplement RIGHT JOIN).
SELECT columns
FROM table1
LEFT|RIGHTOUTERJOIN table2
ON table1.common_column = table2.common_column;Propulsé par
Dans cette syntaxe, le mot-clé LEFT|RIGHT OUTER JOIN détermine les tableaux dont les lignes sont intégralement conservées dans le jeu de résultats.
Note sur le FULL OUTER JOIN
MySQL ne prend pas directement en charge FULL OUTER JOIN. Toutefois, vous pouvez obtenir des résultats similaires en utilisant une combinaison de LEFT JOIN et RIGHT JOIN avec UNION.
SELECT columns
FROM table1
LEFTJOIN table2 ON table1.common_column = table2.common_column
UNIONSELECT columns
FROM table1
RIGHTJOIN table2 ON table1.common_column = table2.common_column;Propulsé par
Exemples
1. Basic LEFT OUTER JOIN
SELECT customers.customer_id, orders.order_id
FROM customers
LEFTOUTERJOIN orders ON customers.customer_id = orders.customer_id;Propulsé par
Cette requête permet de récupérer tous les clients et leurs commandes, le cas échéant. Les clients sans commande apparaîtront toujours dans le résultat avec NULL dans les colonnes de commande.
2. JOINTURE EXTERNE DROITE
SELECT products.product_id, orders.order_id
FROM products
RIGHTOUTERJOIN orders ON products.product_id = orders.product_id;Propulsé par
Ici, toutes les commandes sont répertoriées, y compris celles pour lesquelles il n'y a pas d'entrée de produit correspondante, en remplissant NULL pour les détails du produit.
3. Combiner LEFT JOIN avec la clause WHERE
SELECT employees.employee_id, departments.department_name
FROM employees
LEFTJOIN departments ON employees.department_id = departments.department_id
WHERE departments.department_name ISNULL;Propulsé par
Cette requête permet de trouver les employés qui ne sont affectés à aucun département en listant tous les employés et en filtrant ceux dont le nom de département est NULL.
Conseils et bonnes pratiques
Choisissez le type de jointure correct. Utilisez LEFT JOIN lorsque vous avez besoin de tous les tableaux et RIGHT JOIN lorsque vous avez besoin de tous les tableaux.
Gardez à l'esprit les performances. Les opérations OUTER JOIN peuvent être coûteuses en termes de performances ; assurez-vous que des index sont utilisés sur les colonnes de jointure. L'analyse des plans d'exécution des requêtes permet d'optimiser les performances.
Faites attention aux NULL. Réfléchissez à la manière dont votre application ou les requêtes ultérieures traiteront les valeurs NULL dans l'ensemble des résultats. Utilisez des fonctions telles que IFNULL() ou COALESCE() pour remplacer NULL par des valeurs par défaut.
A utiliser avec précaution. Lorsque vous filtrez à l'aide de WHERE, veillez à ce que l'effet de OUTER JOIN ne soit pas annulé par inadvertance.
Le mot-clé
OUTER JOINde MySQL est utilisé pour extraire des enregistrements de deux tableaux, y compris les enregistrements qui n'ont pas de valeurs correspondantes dans les tableaux liés. Il garantit que tous les enregistrements d'un tableau sont inclus dans les résultats et, lorsqu'aucune correspondance n'est trouvée, des NULL sont insérés dans les colonnes du tableau concerné.Utilisation
OUTER JOINest utilisé lorsque vous devez inclure toutes les lignes d'un tableau ou des deux tableaux, qu'il y ait ou non une correspondance dans l'autre tableau. Il en existe deux types principaux :LEFT OUTER JOIN(ou simplementLEFT JOIN) etRIGHT OUTER JOIN(ou simplementRIGHT JOIN).Dans cette syntaxe, le mot-clé
LEFT|RIGHT OUTER JOINdétermine les tableaux dont les lignes sont intégralement conservées dans le jeu de résultats.Note sur le FULL OUTER JOIN
MySQL ne prend pas directement en charge
FULL OUTER JOIN. Toutefois, vous pouvez obtenir des résultats similaires en utilisant une combinaison deLEFT JOINetRIGHT JOINavecUNION.Exemples
1. Basic LEFT OUTER JOIN
Cette requête permet de récupérer tous les clients et leurs commandes, le cas échéant. Les clients sans commande apparaîtront toujours dans le résultat avec
NULLdans les colonnes de commande.2. JOINTURE EXTERNE DROITE
Ici, toutes les commandes sont répertoriées, y compris celles pour lesquelles il n'y a pas d'entrée de produit correspondante, en remplissant
NULLpour les détails du produit.3. Combiner LEFT JOIN avec la clause WHERE
Cette requête permet de trouver les employés qui ne sont affectés à aucun département en listant tous les employés et en filtrant ceux dont le nom de département est
NULL.Conseils et bonnes pratiques
- Choisissez le type de jointure correct. Utilisez
- Gardez à l'esprit les performances. Les opérations
- Faites attention aux NULL. Réfléchissez à la manière dont votre application ou les requêtes ultérieures traiteront les valeurs NULL dans l'ensemble des résultats. Utilisez des fonctions telles que
- A utiliser avec précaution. Lorsque vous filtrez à l'aide de
```LEFT JOINlorsque vous avez besoin de tous les tableaux etRIGHT JOINlorsque vous avez besoin de tous les tableaux.OUTER JOINpeuvent être coûteuses en termes de performances ; assurez-vous que des index sont utilisés sur les colonnes de jointure. L'analyse des plans d'exécution des requêtes permet d'optimiser les performances.IFNULL()ouCOALESCE()pour remplacerNULLpar des valeurs par défaut.WHERE, veillez à ce que l'effet deOUTER JOINne soit pas annulé par inadvertance.