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 le WHERE clause et MySQL groupe de tous les enregistrements si une fonction d'agrégation est utilisée sans GROUP 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é.