Effizienter Datenabruf: Mehrere WHERE-Bedingungen geschickt kombinieren
Angenommen, Sie müssen Daten aus einer Tabelle basierend auf zwei verschiedenen Bedingungen abrufen. Stellen Sie sich beispielsweise eine Tabelle mit dem Namen „Transaktionen“ vor, die Finanztransaktionen aufzeichnet und Spalten wie „Konto-ID“, „Budget-ID“, „Punkte“ und „Typ“ enthält.
Um bestimmte Daten effizient aus dieser Tabelle abzurufen, müssen Sie möglicherweise mehrere WHERE-Klauseln kombinieren. Beispielsweise müssen Sie möglicherweise die Gesamtpunktzahl ermitteln, die für jede eindeutige „budget_id“ in der Tabelle zugewiesen und ausgegeben wird.
Idee abfragen
Die Abfrage, die Sie erstellen müssen, sollte etwa wie folgt aussehen:
<code class="language-sql">SELECT budget_id, SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated, SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued FROM transactions GROUP BY budget_id</code>
Lassen Sie uns in jede Komponente dieser Abfrage eintauchen, um zu verstehen, wie sie Ihre Ziele erreicht:
SUM(CASE WHEN ... THEN ... ELSE ... END)-Funktion:
Diese Funktion wird verwendet, um die Spalte „Punkte“ basierend auf dem angegebenen „Typ“ bedingt zu summieren. Wenn „Typ“ „Zuordnung“ ist, wird die Summe der „Punkte“ für alle Zeilen berechnet, die diese Bedingung erfüllen. Auf ähnliche Weise wird die Summe der „Punkte“ für Zeilen berechnet, bei denen „Typ“ gleich „Issue“ ist. (Hier wird die IF
-Funktion durch eine standardmäßigere CASE WHEN
ersetzt, um die Lesbarkeit und Kompatibilität des Codes zu verbessern)
GRUPPE NACH budget_id:
Diese Klausel gruppiert die abgerufenen Daten nach der Spalte „budget_id“. Daher stellt die Abfrage für jede eindeutige „budget_id“ in der Tabelle eine separate Ergebniszeile bereit.
Kombinationen von WHERE-Klauseln:
Die WHERE-Klausel fehlt in dieser Abfrage merklich, da die erforderliche Filterung innerhalb der SUM()-Funktion erfolgt. Insbesondere enthält die Funktion Bedingungen zum selektiven Einschließen von Zeilen basierend auf der Spalte „Typ“.
Erwartete Ausgabe:
Die von Ihnen erstellte Abfrage gibt eine Tabelle mit den Spalten „budget_id“, „allocated“ und „issued“ aus. Die Spalte „zugewiesen“ stellt die Summe der Punkte dar, die der Transaktion „Zuweisung“ jeder „Budget_ID“ zugeordnet sind, und die Spalte „Ausgegeben“ stellt die akkumulierten Punkte der Transaktion „Ausgabe“ der entsprechenden „Budget_ID“ dar.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere WHERE-Klausel-ähnliche Bedingungen in einer einzigen SQL-Abfrage effizient kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!