Heim > Datenbank > MySQL-Tutorial > Wie kann ich zwei SELECT-Anweisungen in einer einzigen Abfrage kombinieren, um die Anzahl der Aufgaben und verspäteten Aufgaben anzuzeigen?

Wie kann ich zwei SELECT-Anweisungen in einer einzigen Abfrage kombinieren, um die Anzahl der Aufgaben und verspäteten Aufgaben anzuzeigen?

Patricia Arquette
Freigeben: 2025-01-08 22:46:43
Original
621 Leute haben es durchsucht

How Can I Combine Two SELECT Statements into a Single Query to Show Task Counts and Late Task Counts?

Ergebnisse der SELECT-Anweisung in einer einzigen Abfrage kombinieren

Bei der Arbeit mit Datenbanken ist es äußerst wertvoll, Daten aus mehreren Datenquellen zur Analyse zu kombinieren. Dies zu erreichen ist jedoch manchmal mit Herausforderungen verbunden. In diesem Beispiel haben wir zwei separate SELECT-Anweisungen, von denen jede spezifische Informationen aus der Aufgabendatenbank abruft.

Die erste SELECT-Anweisung zählt die Anzahl der jeder Person zugewiesenen Aufgaben:

<code class="language-sql">SELECT ks, COUNT(*) AS '# Tasks'
FROM Table
GROUP BY ks</code>
Nach dem Login kopieren

Die zweite SELECT-Anweisung identifiziert die Anzahl überfälliger Aufgaben für jede Person (Aufgaben, deren Alter Palt überschreitet):

<code class="language-sql">SELECT ks, COUNT(*) AS '# Late'
FROM Table
WHERE Age > Palt
GROUP BY ks</code>
Nach dem Login kopieren

Unser Ziel ist es, die Ergebnisse dieser beiden Abfragen in einer Tabelle zusammenzufassen, die die Kennung (ks) jeder Person, die Gesamtzahl ihrer Aufgaben (# Aufgaben) und die Anzahl ihrer überfälligen Aufgaben (# Verspätet) enthält. Spalte.

Eine Möglichkeit, dies zu erreichen, ist die Verwendung der JOIN-Operation. Insbesondere ermöglicht uns LEFT JOIN, alle Zeilen aus der ersten Tabelle (t1) und die entsprechenden Zeilen aus der zweiten Tabelle (t2) einzubeziehen, wenn die Join-Schlüssel (ks) übereinstimmen. Wenn in t2 keine entsprechende Zeile vorhanden ist, enthält das Ergebnis NULL-Werte. Dadurch wird sichergestellt, dass auch Personen ohne überfällige Aufgaben in den Endergebnissen erscheinen.

Die folgende Abfrage implementiert LEFT JOIN:

<code class="language-sql">SELECT t1.ks, t1.[# Tasks], COALESCE(t2.[# Late], 0) AS [# Late]
FROM 
    (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1
LEFT JOIN
    (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2
ON (t1.ks = t2.ks);</code>
Nach dem Login kopieren

Die COALESCE-Funktion verarbeitet potenzielle NULL-Werte in [# Late] und stellt sicher, dass ein 0-Wert zurückgegeben wird. Dadurch wird die gewünschte Ausgabetabelle erstellt:

<code>KS        # Tasks   # Late
person1   7         1
person2   3         1
person3   2         0  </code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich zwei SELECT-Anweisungen in einer einzigen Abfrage kombinieren, um die Anzahl der Aufgaben und verspäteten Aufgaben anzuzeigen?. 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