Visualizzazione dei risultati da 1 a 5 su 5

Discussione: somma ogni tot record

  1. #1

    somma ogni tot record

    Ciao a tutti, devo creare una funzione che mi faccia la somma di vari campi della mia tabella ogni 3 record.

    Praticamente per spiegarmi meglio nella tabella ho questi campi "A" "B" e "C", i primi 3 record di ogni campo devono essere sommati, dal 4 al 6 idem e così via pe un numero che non è fisso in quanto la quantità di record non è definita.

    In fine devo aggiornare la tabella in modo che mi contenga le somme risultanti.

    Avete idee a riguardo? non so proprio da dove partire...
    Vi ringrazio in anticipo!

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Vedi se queste query eseguono il conteggio che ti aspetti.

    codice:
    set @c := 0, @num := 0;
    select gruppo,sum(a) as tot_a,sum(b) as tot_b,sum(c) as to_c from (
    select *,
       @num := if(@c mod 3 = 0, @num+ 1, @num) as gruppo,
       @c := @c +1 as cont
    from tabella
    order by id asc) as tab 
    group by gruppo

  3. #3
    Grazie dell'aiuto, mi da questo errore: Parse error: syntax error, unexpected '@' in test.php on line 23
    Perchè? ho php 5

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Le query da integrare nel codice php e da eseguire con mysql_query() son due, una per la prima riga e una a partire dalla select. Prima eseguile da phpmyadmin contemporaneamente e vedi se ottieni il risultato atteso.

  5. #5
    Ok funziona perfettamente da phpmyadmin grazie ancora, non so se l'ho integrato bene, sembra funzionare mi controlli?

    Codice PHP:
    $sql0 "set @c := 0, @num := 0;";
    $result0  mysql_query($sql0) or
                die(
    'Invalid Query : ' .
                
    mysql_errno() . ' : ' 
                
    mysql_error()); 
                
    $sql"select gruppo,sum(a) as atot,sum(b) as btot,sum(c) as ctot from (\n"
        
    "select *,\n"
        
    " @num := if(@c mod 3 = 0, @num+ 1, @num) as gruppo,\n"
        
    " @c := @c +1 as cont\n"
        
    "from temp\n"
        
    "order by id asc) as tab \n"
        
    "group by gruppo";
        
    $result  mysql_query($sql) or
                die(
    'Invalid Query : ' .
                
    mysql_errno() . ' : ' 
                
    mysql_error()); 
    $results mysql_query($result);
    while (
    $myrow mysql_fetch_array($result)) {

     
    $x    $myrow['atot']."
    "
    ;
     
    echo 
    $x;


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.