Dépannage des requêtes SQL : nombre de lignes incorrect et GROUP BY
Solution
Votre requête SQL produit un nombre de lignes inexact, additionnant toutes les lignes au lieu de individuellement. La solution réside dans l'utilisation de la clause GROUP BY
dans la sous-requête qui rejoint la table messages_aura
. GROUP BY
regroupe les lignes avec des valeurs identiques dans les colonnes spécifiées, fournissant les décomptes corrects.
Problème et solution :
L'original LEFT JOIN
à messages_aura
manquait d'une clause GROUP BY
:
<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>
Cela a entraîné un décompte Aura
incorrect, car il totalisait toutes les lignes de messages_aura
. L'ajout de GROUP BY
corrige ceci :
<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>
Maintenant, chaque ligne de messages_aura
est identifiée de manière unique par AuraID
et AuraStatus
, ce qui permet d'obtenir des décomptes Aura
précis. La fonction COUNT(*)
agrège correctement pour chaque combinaison unique de AuraID
et AuraStatus
.
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!