Maison >base de données >tutoriel mysql >Pourquoi plusieurs LEFT JOIN produisent-ils un nombre de visites incorrect ?
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!