Maison > base de données > tutoriel mysql > Pourquoi ma jointure externe gauche ne renvoie-t-elle que des données partielles de la table de gauche ?

Pourquoi ma jointure externe gauche ne renvoie-t-elle que des données partielles de la table de gauche ?

Susan Sarandon
Libérer: 2025-01-23 16:08:10
original
382 Les gens l'ont consulté

Why Does My Left Outer Join Only Return Partial Data From the Left Table?

Jointures externes gauches et données incomplètes de la table de gauche

Comprendre comment les conditions de jointure affectent les résultats d'une jointure externe gauche est essentiel. Des conditions mal placées peuvent entraîner des données incomplètes dans le tableau de gauche.

Examinons cette requête :

<code class="language-sql">SELECT day.days, COUNT(*) AS opens
FROM day
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date))
WHERE tracking.open_id = 10
GROUP BY day.days;</code>
Copier après la connexion

Cette requête vise à compter les pages ouvertes quotidiennement. Cependant, il se peut qu'il n'affiche que quelques jours, même si le tableau day en contient beaucoup plus. Le problème réside dans la clause WHERE.

La condition de jointure ON day.days = DAY(FROM_UNIXTIME(open_date)) correspond correctement aux jours. Mais, WHERE tracking.open_id = 10 filtre après la jointure, en supprimant tous les jours sans open_id = 10 dans la table tracking.

Pour inclure tous jours du tableau de gauche (day), quelles que soient les correspondances dans tracking, déplacez la condition open_id dans la clause ON :

<code class="language-sql">SELECT day.days, COUNT(*) AS opens
FROM day
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date)) AND tracking.open_id = 10
GROUP BY day.days;</code>
Copier après la connexion

Cette requête corrigée garantit que tous les jours sont inclus, fournissant un nombre quotidien complet de pages ouvertes, même si certains jours manquent d'entrées dans la table tracking avec open_id = 10. Le COUNT(*) renverra 0 pour ces jours.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal