Bien que les LEFT OUTER JOIN soient conçues pour renvoyer toutes les lignes de la table de gauche, l'ensemble de résultats peut parfois être plus grand que prévu. Cela se produit en raison d’une caractéristique clé du fonctionnement des LEFT OUTER JOIN.
Contrairement à l'hypothèse simple selon laquelle les lignes sans correspondance de la table de gauche auront simplement des valeurs NULL dans les colonnes de la table de droite, un LEFT OUTER JOIN inclut en fait toutes les lignes correspondantes des les deux tables. Par conséquent, si une seule ligne du tableau de gauche correspond à plusieurs lignes du tableau de droite, le résultat contiendra plusieurs copies de cette ligne du tableau de gauche. Ceci est similaire au comportement d'un INNER JOIN, ce qui entraîne un nombre de lignes plus élevé que prévu.
Considérez cette requête SQL :
<code class="language-sql">SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID FROM SUSP.Susp_Visits LEFT OUTER JOIN DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum</code>
Notez que seules les colonnes de SUSP.Susp_Visits
sont sélectionnées. Cependant, en raison du potentiel de correspondances multiples dans DATA.Dim_Member
, chaque ligne de SUSP.Susp_Visits
peut apparaître plusieurs fois dans la sortie. Cela explique l'augmentation du nombre de lignes.
Si vous n'avez besoin que des données de la table de gauche et que vous souhaitez éviter les lignes en double, un LEFT OUTER JOIN n'est pas nécessaire. Une simple instruction SELECT
du tableau de gauche fournira les données requises sans le nombre de lignes gonflé. Comprendre ce comportement est crucial pour utiliser efficacement les LEFT OUTER JOIN et obtenir des résultats précis.
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!