Maison >base de données >tutoriel mysql >Pourquoi plusieurs LEFT JOIN produisent-ils un nombre de visites incorrect ?

Pourquoi plusieurs LEFT JOIN produisent-ils un nombre de visites incorrect ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-23 12:19:10683parcourir

Why are Multiple LEFT JOINs Producing Incorrect Visit Counts?

Comprendre le nombre de visites inexactes à partir de plusieurs LEFT JOINs

La requête fournie génère un nombre de visites incorrect, car la nature séquentielle de plusieurs LEFT JOIN opérations conduit à des résultats multiplicatifs plutôt qu'additifs.

Initialement, la connexion au tableau grocery compte correctement les visites à l'épicerie par utilisateur. Cependant, le LEFT JOIN suivant avec fishmarket crée plusieurs lignes pour chaque utilisateur, multipliant ainsi le nombre de visites à l'épicerie par le nombre de visites au marché aux poissons pour chaque utilisateur. Cela explique le décompte erroné de « 12 » pour les utilisateurs visitant les deux magasins.

La solution : des sous-requêtes pour une agrégation précise

Le problème est résolu à l'aide de sous-requêtes pour regrouper indépendamment le nombre de visites pour chaque magasin :

<code class="language-sql">SELECT u.id,
       u.account_balance,
       (SELECT COUNT(*) FROM grocery WHERE user_id = u.id) AS "# of grocery visits",
       (SELECT COUNT(*) FROM fishmarket WHERE user_id = u.id) AS "# of fishmarket visits"
FROM users u
ORDER BY u.id;</code>

Cette requête révisée compte et affiche avec précision les visites à l'épicerie et au marché aux poissons pour chaque utilisateur, fournissant ainsi les données agrégées correctes.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn