Konsolidieren von Daten aus mehreren Tabellen mit einer einzigen MySQL-Abfrage
Anfangs führte die Verwendung mehrerer Unterabfragen zur Aggregation von Daten aus verschiedenen Tabellen zu ungenauen Ergebnissen, da nur die erste Spalte korrekte Werte anzeigte. Um dieses Problem zu lösen, ist eine effizientere Methode erforderlich.
Die effektivste Lösung beinhaltet die bedingte Aggregation innerhalb einer einzelnen Tabellenabfrage. Dieser Ansatz vermeidet die Einschränkungen mehrerer Unterabfragen und liefert genaue Ergebnisse. Die folgende Abfrage demonstriert diese Technik:
<code class="language-sql">SELECT DAY_IN, COUNT(*) AS arr, SUM(IF(PAT_STATUS LIKE '%ong%', 1, 0)) AS ONG1, SUM(IF(PAT_STATUS LIKE '%rtde%', 1, 0)) AS RTED, SUM(IF(PAT_STATUS LIKE '%pol%', 1, 0)) AS POL1, SUM(IF(PAT_STATUS LIKE '%para%', 1, 0)) AS para FROM t_hospital WHERE DAY_IN BETWEEN @start_check AND @finish_check AND RES_DATE BETWEEN @start_res AND @finish_res AND ID_daily_hos = @daily_hos GROUP BY DAY_IN</code>
Diese Abfrage verwendet die Funktion IF()
, um Vorkommen basierend auf der Spalte PAT_STATUS
bedingt zu zählen. Jede Zeile wird nur einmal gezählt und trägt zu einer einzigen aggregierten Spalte bei. Die Funktion SUM()
summiert dann diese bedingten Zählungen für jedes DAY_IN
.
Dieser Einzelabfrage-Ansatz bietet eine präzise und genaue Methode zum Aggregieren von Daten aus verschiedenen Spalten innerhalb derselben Tabelle und löst so das Problem ungenauer Ergebnisse, die mit der ursprünglichen Methode mit mehreren Unterabfragen erzielt wurden.
Das obige ist der detaillierte Inhalt vonWie aggregiert man effizient mehrere Spalten aus verschiedenen Tabellen in einer einzigen MySQL-Anweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!