2010-01-14 8 views
0

J'ai une requête très complexe (mysql + php) et j'aimerais connaître la façon la plus simple de faire la somme des colonnes et des rangées d'une table en utilisant SUM (x).Lignes et colonnes SUM

Peut-être un javascript pourrait aider. Merci d'avance.

+1

JavaScript ne peut presque jamais aider avec des choses côté serveur. –

+0

Que voulez-vous dire par 'sum collums ** et ** rows'? Vous voulez faire la somme de tous les champs de chaque ligne que vous récupérez dans la base de données? – Veger

+0

Quel est le problème avec 'SUM (col)'? – kennytm

Répondre

0

Je vous conseille d'utiliser la fonction SOMME() dans MySQL . La seule raison pour ne pas l'utiliser est si vous avez un comptage compliqué basé sur d'autres valeurs. Ensuite, je ferais le comptage dans le PHP. Voici un exemple:

$result = mysql_query("... query here ..."); 
$cats = 0; 
$dogs = 0; 
while($row = mysql_fetch_array($result)) 
{ 
    if($row['type'] == 'cat') 
    { 
      $cats++; 
    } 
    else 
    { 
      $dogs++; 
    } 
} 
echo "Cats: $cats Dogs: $dogs"; 
0

Je le ferais dans la requête elle-même. Si vous publiez la requête, je peux fournir plus d'informations.

0

Ceci est la requête, je veux résumer les colonnes et les lignes. (Lignes sont les vars « svago » et « lavoro » commandés pour chaque mois de l'année, alors que des colonnes sont les mêmes valeurs dans l'année)

$q = "SELECT DISTINCT DATE_FORMAT(TIMESTAMP, '%m%Y') AS derp FROM main LIMIT 0 , 30"; 
$qq = mysql_query($q); 

while($res = mysql_fetch_array($qq)) { 

$where = $res['derp']; 

$q = "SELECT timestamp, SUM(moto) + SUM(mary) AS svago, SUM(lavoro) + SUM(affitto) AS lavoro FROM main WHERE DATE_FORMAT(timestamp, '%m%Y') = $where";