Décider entre les jointures gauche, droite et interne : un guide pratique
Lorsque vous travaillez avec des bases de données relationnelles, les jointures sont un outil essentiel pour combiner les données de plusieurs tables. Cependant, choisir le bon type de jointure peut s'avérer délicat, en particulier lorsque l'on travaille avec des valeurs nullables. Cet article fournit un guide pratique pour vous aider à déterminer quand utiliser les jointures gauche, droite ou interne, avec un accent particulier sur la résolution du problème courant consistant à décider quelle table placer de quel côté de la jointure.
Types de jointure
-
Jointure interne : Renvoie uniquement les lignes qui correspondent aux deux tables.
-
Jointure gauche : Renvoie toutes les lignes du tableau de gauche, qu'il y ait ou non une correspondance dans le tableau de droite. Les valeurs nulles apparaissent dans les colonnes du tableau de droite pour les lignes sans correspondance.
-
Jointure à droite : Renvoie toutes les lignes du tableau de droite, qu'il y ait ou non une correspondance dans le tableau de gauche.
Choisir la bonne jointure
Pour déterminer le type de jointure à utiliser, tenez compte des facteurs suivants :
Exemple
La requête fournie est difficile car dossierDetails et imageDetails peuvent avoir des valeurs nulles pour les colonnes de jointure.
-
Rejoindre à gauche : Cela renverra toutes les lignes de batchDetails, qu'il y ait ou non des lignes correspondantes dans dossierDetails et imageDetails.
-
Jointure à droite : Cela renverra toutes les lignes de dossierDetails et imageDetails, qu'il y ait ou non des lignes correspondantes dans batchDetails.
-
Jointure interne : Cela renverra uniquement les lignes qui correspondent aux trois tables, excluant potentiellement les lignes avec des valeurs nulles.
Recommandation
Dans ce cas, une jointure à gauche est plus appropriée car :
- Vous souhaitez conserver toutes les lignes de batchDetails, qu'il existe ou non des lignes correspondantes dans les autres tables.
- Le La condition de jointure inclut des colonnes nullables, donc une jointure interne pourrait exclure des lignes valides.
Conseils supplémentaires
- Si la clé primaire d'une table est susceptible d'avoir des valeurs correspondantes dans l'autre table, envisagez de placer cette table sur le côté gauche de la jointure.
- Utilisez des parenthèses pour contrôler l'ordre des jointures. et évitez toute ambiguïté.
- Reportez-vous à la représentation visuelle des jointures SQL liée dans l'article référencé pour un graphique utile représentation.
- Envisagez d'utiliser NOT IN au lieu d'une jointure gauche si les performances sont un problème, en particulier pour les grands ensembles de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!