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