LEFT OUTER JOIN Comportement inattendu : plus de lignes que la table de gauche
Une idée fausse courante à propos des LEFT OUTER JOIN est que l'ensemble de résultats aura toujours le même nombre de lignes, voire moins, que le tableau de gauche. Cependant, ce n'est pas toujours vrai. Le nombre de lignes peut dépasser le nombre de lignes du tableau de gauche dans des conditions spécifiques.
Ce problème a été observé dans une requête utilisant un LEFT OUTER JOIN entre "SUSP.Susp_Visits" (table de gauche) et "DATA.Dim_Member" (table de droite). Le résultat joint comportait plus de lignes que les 4935 lignes de "SUSP.Susp_Visits".
Comprendre les LEFT OUTER JOINs
Un LEFT OUTER JOIN fonctionne comme suit :
Pourquoi des lignes supplémentaires apparaissent
Les lignes supplémentaires ne sont pas créées en dupliquant les lignes de gauche du tableau, mais plutôt par la structure du tableau de droite. Le problème survient lorsque plusieurs lignes du tableau de droite ("DATA.Dim_Member") correspondent à une seule ligne du tableau de gauche ("SUSP.Susp_Visits").
Par exemple, si un "MemID" dans "SUSP.Susp_Visits" correspond à plusieurs valeurs "MembershipNum" dans "DATA.Dim_Member", le JOIN produira plusieurs lignes de sortie pour cette seule ligne de gauche du tableau, augmentant ainsi la ligne globale. compter.
Solutions
Pour éviter cette inflation de ligne dans un LEFT OUTER JOIN :
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!