Maison > base de données > tutoriel mysql > Pourquoi ma jointure externe gauche ne renvoie-t-elle pas tous les représentants commerciaux lorsque je filtre par date ?

Pourquoi ma jointure externe gauche ne renvoie-t-elle pas tous les représentants commerciaux lorsque je filtre par date ?

Patricia Arquette
Libérer: 2025-01-17 14:22:10
original
259 Les gens l'ont consulté

Why Doesn't My Left Outer Join Return All Sales Representatives When I Filter by Date?

Résoudre le problème de filtrage des dates dans la jointure externe gauche SQL

Dans votre requête SQL, la jointure externe gauche n'a pas renvoyé les résultats attendus. Plus précisément, lorsque vous incluez un paramètre de date dans la clause WHERE, les commerciaux qui n'ont pas de données correspondantes dans le tableau de droite ne sont pas affichés.

Pour résoudre ce problème, vous devez déplacer la contrainte de date de la table prescriptions dans la condition ON de la jointure au lieu de la conserver dans la clause WHERE :

<code class="language-sql">SELECT  salesrep.salesrepid as SalesRepID,
        salesrep.fname as SalesrepFName,
        salesrep.lname as SalesRepLName,
        salesrep.fname+' '+salesrep.lname as SalesRepFullName,
        prescriber.dea_no as PDeaNo,
        prescriber.lname+', '+prescriber.fname as DocName,
        CONVERT(VARCHAR(8), prescriptions.filldate, 1) as FillDate,
        prescriptions.drugname as DrugName,
        prescriptions.daysupply as Supply,
        prescriptions.qtydisp as QtyDisp,
        prescriptions.rx_no as Refill,
        prescriptions.copay as Sample,
        ROUND(prescriptions.AgreedToPay-(prescriptions.AgreedToPay*.07),2) as AgreedToPay,
        prescriptions.carrierid as CarrierID
FROM salesrep
  LEFT OUTER JOIN prescriber on salesrep.salesrepid = prescriber.salesrepid
  LEFT OUTER JOIN prescriptions ON prescriber.dea_no = prescriptions.dea_no
                             AND prescriptions.filldate >= '09-01-12'
                             AND prescriptions.filldate <= '09-17-12'
ORDER BY prescriptions.filldate</code>
Copier après la connexion

En déplaçant la contrainte dans une condition ON, vous pouvez vous assurer que la jointure externe gauche renvoie correctement les résultats pour tous les commerciaux, que des enregistrements correspondants existent ou non dans la table 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!

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