Maison >base de données >tutoriel mysql >Comment agréger efficacement plusieurs colonnes de différentes tables dans une seule instruction MySQL ?

Comment agréger efficacement plusieurs colonnes de différentes tables dans une seule instruction MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-21 11:12:10649parcourir

How to Efficiently Aggregate Multiple Columns from Different Tables in a Single MySQL Statement?

Consolidation des données de plusieurs tables avec une seule requête MySQL

Au départ, l'utilisation de plusieurs sous-requêtes pour agréger les données de diverses tables donnait des résultats inexacts, seule la première colonne affichant les valeurs correctes. Pour résoudre ce problème, une méthode plus efficace est nécessaire.

La solution la plus efficace implique l'agrégation conditionnelle au sein d'une seule requête de table. Cette approche évite les limitations de plusieurs sous-requêtes et produit des résultats précis. La requête suivante illustre cette technique :

<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>

Cette requête utilise la fonction IF() pour compter conditionnellement les occurrences en fonction de la colonne PAT_STATUS. Chaque ligne n'est comptée qu'une seule fois, contribuant à une seule colonne agrégée. La fonction SUM() totalise ensuite ces décomptes conditionnels pour chaque DAY_IN.

Cette approche à requête unique fournit une méthode concise et précise pour agréger les données de différentes colonnes au sein de la même table, résolvant ainsi le problème des résultats inexacts obtenus à partir de la méthode de sous-requête multiple d'origine.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn