Maison >base de données >tutoriel mysql >Pourquoi mon compteur SQL renvoie-t-il toutes les lignes au lieu de lignes individuelles ?
Dépannage de SQL COUNT : obtention du nombre de lignes individuelles
Votre requête SQL produit probablement un nombre total de lignes incorrect, car il manque une clause GROUP BY
cruciale. L'exemple montre un décompte de 2 pour la ligne du haut, indiquant un problème d'agrégation.
Le problème principal de la requête complexe fournie réside dans la sous-requête calculant le Aura
nombre :
<code class="language-sql">LEFT JOIN ( select `ID` as `AuraID`, `Status` as `AuraStatus`, count(*) as `Aura` from messages_aura ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)</code>
Cette sous-requête, sans clause GROUP BY
, additionne toutes les lignes de messages_aura
, indépendamment de AuraID
ou AuraStatus
. Par conséquent, il renvoie toujours le nombre total de lignes du tableau (2 dans votre cas).
La solution est d'ajouter une clause GROUP BY
pour regrouper et compter correctement :
<code class="language-sql">LEFT JOIN ( select `ID` as `AuraID`, `Status` as `AuraStatus`, count(*) as `Aura` from messages_aura GROUP BY `AuraID`, `AuraStatus` ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)</code>
Cette sous-requête révisée regroupe messages_aura
lignes par AuraID
et AuraStatus
, en comptant avec précision Aura
pour chaque groupe. Cette correction donnera les résultats attendus : 1 pour la ligne du bas et 2 pour la ligne du haut.
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!