PHP fonction SOMME
J'ai un tableau comme suit:
id q_id value
------------------------
1 2 5
2 2 NULL
3 2 5
4 2 NULL
5 4 2
6 4 NULL
7 4 2
8 4 NULL
Ce que je veux est d'obtenir la somme de (par exemple) à la valeur where q_id = 2
$sq = mysql_query("SELECT SUM(value) AS sum FROM table WHERE q_id = 2)or die(mysql_error());
while($row = mysql_fetch_array($sq)){
$sum = $row['sum'];
}
echo $sum."<br>";
Mais je suis
5
5
Mais ce que je veux, c'est la somme de la valeur et d'attendre 10 à la place.
Je vous remercie pour votre aide.
- Veuillez cesser d'utiliser
mysql_*
fonctions qu'ils sont dans l'abandon du processus. Être un meilleur Développeur PHP. - où est le "GROUPE" ?
- Le code que vous avez posté contient des erreurs de syntaxe, et la requête que vous avez montré ne produira pas le résultat que vous avez indiqué. Je ne pense pas que vous êtes en train de faire ce que tu nous.
- Pas nécessaire, comme c'est filtrée par
q_id
dans leWHERE
clause et MySQL groupe de tous les enregistrements si une fonction d'agrégation est utilisée sansGROUP BY
. - parbleu, je pensais que c'était obligatoire pour toutes les fonctions d'agrégation, merci pour l'info
- Vrai de la norme ANSI SQL, mais voir dev.mysql.com/doc/en/group-by-functions.html: "Si vous utilisez une fonction de groupe dans une déclaration contenant pas de
GROUP BY
clause, il est l'équivalent de regroupement sur toutes les lignes." - marrant de voir que la page de titre est "GROUPE PAR Fonctions (regroupement)"
- Il y a en effet rien de mal avec le SQL comme écrit dans la question. J'ai passé trop de temps de travail avec Oracle je pense, donc je l'avais oublié ces détails à propos de MySQL gestion de GROUPE et PAR les valeurs Null. J'ai testé le SQL et il produit 10. Afin de debug, je voudrais suggérer l'impression de l'ensemble de l' $row tableau dans la boucle pour voir sa structure.
- De plus, vous avez l'impression que la variable une fois en dehors de la boucle while. Et la variable ne peut en aucun cas être l'obtention de la valeur "5\n5" ici. Je suis d'accord avec @GavinTowey qu'il n'y a pas vraiment de sens, le code que vous avez posté, peut produire les résultats que vous avez posté.
Vous devez vous connecter pour publier un commentaire.
Si vous allez faire une boucle sur l'ensemble des résultats de toute façon, pourquoi ne pas simplement utiliser
SELECT value FROM table WHERE q_id=2
ensuite la somme de ces valeurs à l'aide de la boucle while? Quelque chose comme:
while($row = mysql_fetch_array($sq)) {
$sum += $row['value'];
}
echo $sum."<br>";
Edit: aussi, comme Jason McCreary dit ci-dessus, vous devriez penser à une autre méthode d'interrogation de la base de données. Je suggère à la recherche php.net pour "AOP", ce qui est très facile à utiliser.
Essayer... Vous êtes en affichage
value
, il manquait des devis dans votre code.S'il vous plaît mettre
$am ='2';
avant l'instruction select et aussi assurez-vous que vous avez connecté à la base de données à l'aide de$link
Vous obtiendrez la somme totale en fonction de la valeur de
q_id
J'ai testé le code et fonctionne très bien.
Vous avez besoin pour ajouter un GROUPE de votre requête. Ajoutez les lignes suivantes à la fin
WHERE q_id = 2
.