Heim > Datenbank > MySQL-Tutorial > Warum liefert mein LEFT OUTER JOIN bei der Verwendung von Datumsfiltern nicht die erwarteten Ergebnisse?

Warum liefert mein LEFT OUTER JOIN bei der Verwendung von Datumsfiltern nicht die erwarteten Ergebnisse?

Patricia Arquette
Freigeben: 2025-01-17 14:13:09
Original
895 Leute haben es durchsucht

Why Does My LEFT OUTER JOIN Fail to Return Expected Results When Using Date Filters?

Lösung des Problems inkonsistenter LEFT OUTER JOIN-Abfrageergebnisse

In SQL dient die LEFT OUTER JOIN-Operation dazu, die Daten in der linken Tabelle beizubehalten, auch wenn die entsprechenden Daten in der rechten Tabelle nicht vorhanden sind. Es kann jedoch verwirrend sein, wenn ein LEFT OUTER JOIN nicht die erwarteten Ergebnisse liefert.

Angenommen, Sie müssen Daten aus drei Tabellen mit LEFT OUTER JOIN abrufen. Sie möchten Informationen aus der Salesrep-Tabelle abrufen, auch wenn in den Prescriber- und Prescriptions-Tabellen keine übereinstimmenden Datensätze vorhanden sind. Wenn Sie diese Abfrage mit einem Datumsparameter in der WHERE-Klausel ausführen, stoßen Sie auf ein unerwartetes Ergebnis: Es werden keine Zeilen für Vertriebsmitarbeiter zurückgegeben, denen keine Daten zugeordnet sind.

Um dieses Problem zu lösen, besteht der Schlüssel darin, die Einschränkungen von Prescriptions.filldate von der WHERE-Klausel in die ON-Bedingung von JOIN zu verschieben. Die geänderte Abfrage sollte etwa wie folgt aussehen:

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

Zunächst wurden Datensätze mit NULL-Werten in Prescriptions.filldate fälschlicherweise herausgefiltert, wenn der Datumsparameter in der WHERE-Klausel enthalten war. Durch die Aufnahme in die EIN-Bedingung wird der Vertriebsmitarbeiter auch dann in den Ergebnissatz einbezogen, wenn keine zugehörigen Rezeptdetails vorhanden sind, und NULL-Werte werden entsprechend angezeigt.

Wenn Sie nun eine Abfrage ausführen, erhalten Sie erfolgreich die Salesrep-Tabelleninformationen, unabhängig von den entsprechenden Daten in den Prescriber- und Prescriptions-Tabellen.

Das obige ist der detaillierte Inhalt vonWarum liefert mein LEFT OUTER JOIN bei der Verwendung von Datumsfiltern nicht die erwarteten Ergebnisse?. 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