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>
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!