Maison >base de données >tutoriel mysql >Comment combiner plusieurs instructions SQL SELECT pour compter les tâches et les tâches en retard ?
Combinaison de plusieurs instructions SQL SELECT : un exemple pratique
Ce guide montre comment combiner efficacement les résultats de plusieurs instructions SQL SELECT
dans un tableau unique et complet. Nous utiliserons une base de données de gestion de tâches comme exemple. Chaque enregistrement de tâche comprend des détails tels que les délais, les jours jusqu'à la date limite (PALT) et l'âge (jours depuis la création). L'objectif est de générer un rapport montrant, pour chaque personne, son nombre total de tâches et le nombre de tâches en retard.
Les requêtes individuelles pour compter le total des tâches et les tâches en retard pourraient ressembler à ceci :
<code class="language-sql">SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks;</code>
<code class="language-sql">SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks;</code>
Pour fusionner ces résultats, nous utilisons un LEFT JOIN
. Cela garantit que toutes les personnes du nombre total de tâches sont incluses, même si elles n'ont aucune tâche en retard.
<code class="language-sql">SELECT t1.ks, t1."Total Tasks", COALESCE(t2."Overdue Tasks", 0) AS "Overdue Tasks" FROM (SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks) t1 LEFT JOIN (SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks) t2 ON t1.ks = t2.ks;</code>
La fonction COALESCE
gère les cas où une personne n'a aucune tâche en retard (ce qui entraîne NULL
du LEFT JOIN
), en remplaçant NULL
par 0 pour plus de clarté. Le tableau final affichera ks
(ID de la personne), « Total des tâches » et « Tâches en retard ». Le LEFT JOIN
garantit que toutes les personnes sont répertoriées, qu'elles aient ou non des tâches en retard.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!