Maison >base de données >tutoriel mysql >Pourquoi mon LEFT OUTER JOIN ne parvient-il pas à renvoyer les résultats attendus lors de l'utilisation de filtres de date ?
Résoudre le problème des résultats de requête LEFT OUTER JOIN incohérents
En SQL, l'opération LEFT OUTER JOIN est conçue pour conserver les données dans la table de gauche même si les données correspondantes n'existent pas dans la table de droite. Cependant, cela peut prêter à confusion lorsqu'un LEFT OUTER JOIN ne produit pas les résultats attendus.
Supposons que vous ayez besoin de récupérer des données de trois tables à l'aide de LEFT OUTER JOIN. Vous souhaitez obtenir des informations de la table Salesrep même s'il n'existe aucun enregistrement correspondant dans les tables Prescripteur et Prescriptions. Lors de l'exécution de cette requête avec un paramètre de date dans la clause WHERE, vous rencontrez un résultat inattendu : aucune ligne n'est renvoyée pour les commerciaux qui ne sont associées à aucune donnée.
Pour résoudre ce problème, la clé est de déplacer les contraintes de Prescriptions.filldate de la clause WHERE vers la condition ON de JOIN. La requête modifiée devrait ressembler à ce qui suit :
<code class="language-sql">LEFT OUTER JOIN prescriptions ON prescriber.dea_no = prescriptions.dea_no AND prescriptions.filldate >= '09-01-12' AND prescriptions.filldate < '10-01-12'</code>
Initialement, les enregistrements avec des valeurs NULL dans Prescriptions.filldate étaient incorrectement filtrés lorsque le paramètre de date était dans la clause WHERE. En les incluant dans la condition ON, le commercial sera toujours inclus dans l'ensemble de résultats même s'il n'y a aucun détail de prescription associé, et les valeurs NULL seront affichées de manière appropriée.
Désormais, lors de l'exécution d'une requête, vous obtiendrez avec succès les informations de la table Salesrep quelles que soient les données correspondantes dans les tables Prescripteur et Prescriptions.
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!