Heim > Datenbank > MySQL-Tutorial > Warum gibt mein linker äußerer Join nicht alle Vertriebsmitarbeiter zurück, wenn ich nach Datum filtere?

Warum gibt mein linker äußerer Join nicht alle Vertriebsmitarbeiter zurück, wenn ich nach Datum filtere?

Patricia Arquette
Freigeben: 2025-01-17 14:22:10
Original
259 Leute haben es durchsucht

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

Lösen Sie das Problem der Datumsfilterung in SQL Left Outer Join

In Ihrer SQL-Abfrage hat der linke äußere Join nicht die erwarteten Ergebnisse zurückgegeben. Insbesondere wenn Sie einen Datumsparameter in die WHERE-Klausel aufnehmen, werden Vertriebsmitarbeiter, die in der rechten Tabelle keine passenden Daten haben, nicht angezeigt.

Um dieses Problem zu lösen, müssen Sie die Datumsbeschränkung der prescriptions-Tabelle in die ON-Bedingung des Joins verschieben, anstatt sie in der WHERE-Klausel beizubehalten:

<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>
Nach dem Login kopieren

Indem Sie die Einschränkung in eine ON-Bedingung verschieben, können Sie sicherstellen, dass der linke äußere Join korrekt Ergebnisse für alle Vertriebsmitarbeiter zurückgibt, unabhängig davon, ob übereinstimmende Datensätze in der prescriptions-Tabelle vorhanden sind.

Das obige ist der detaillierte Inhalt vonWarum gibt mein linker äußerer Join nicht alle Vertriebsmitarbeiter zurück, wenn ich nach Datum filtere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage