Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: Somma di dati mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    20

    Somma di dati mysql

    Ciao, ho una tabella strutturata in questo modo:
    id vote_1 vote_2 vote_3 vote_4 vote_5
    Seleziono tutti i dati contenuti nella tabella e dovrei fare in modo che ad ogni id associ la somma dei valori contenuti nelle restanti tabelle, ovvero(vote_1,vote_2,vote_3,vote_4,vote_5).
    Mi potete dare una mano? Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Non ho capito cosa intendi per "associare" cmq provo a darti una soluzione.

    Probabilmente c'è anche un modo di farlo direttamente in SQL puro, ma non essendone una cima ti do una soluzione in PHP:

    Codice PHP:
    <?php

    $sql 
    "SELECT * FROM tabella_voti ORDER BY id DESC";
    $result mysql_query($sql);
    print(
    "<table>");
    while(
    $row mysql_fetch_array($result))
    {
        print(
    "<tr>");
            print(
    "<td>");
                print(
    $row['id']);
            print(
    "</td>");
        print(
    "</tr>");
        
    $voto_tot $row['voto_1'] + $row['voto_2'] + $row['voto_3'] + $row['voto_4'] + $row['voto_5'];    
        print(
    "<tr>");
            print(
    "<td>");
                print(
    $voto_tot);
            print(
    "</td>");
        print(
    "</tr>");
    }
    print(
    "</table>");

    ?>
    Questo ti stampa una tabella con ID e somma dei voti associati a quell'ID. Credo che a livello di ottimizzazione sia identico che non fare un SUM in SQL (cmq si passa tutte le righe).



  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    20
    Il mio obiettivo era associare ad ogni voto totale l'ID corrispondente e metterli in ordine crescente; solo che nn riesco

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Hai provato lo script ch eti ho postato? Non va bene? Cosa intendi esattamente per "associare"? Un array??

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    20
    Si... cmq quello che mi hai detto l'ho gia fatto ma nn basta :P
    Dovrei creare un array da poi ordinare

  6. #6
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    non si capisce molto di quello che vuoi fare...

    Comunque se la tua tabella è strutturata in quel modo, non credo tu possa risolvere il problema direttamente in sql.
    Ma è relativo ad un sondaggio?

    Posta un esempio dei dati contenuti nella tabella e di quello che vorresti fare.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    20
    Infatti nn posso farlo da mysql;alcuni dati sono:

    ID vote_1 vote_2 vote_3 votea_4 vote_5
    59 152 0 1500 33 23

    60 78 8 0 4 1

    Dovrei fare la somma dei voti x ID... per l'ID 59 la somma è 1708 e per il 60 è 91....
    quindi dovrei creare un array di questo tipo (59=>1708, 60=>91 ecc) e poi metterlo in ordina crescente a seconda del voto totale

  8. #8
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:

    $sql 
    "SELECT * FROM tabella_voti ORDER BY id ASC";
    $result mysql_query($sql);
    while(
    $row mysql_fetch_array($result))
    {
        
    $voto_tot $row['voto_1'] + $row['voto_2'] + $row['voto_3'] + $row['voto_4'] + $row['voto_5'];
        
    $ar_id_voto[$row['id']] = $voto_tot;
    }

    print_r($ar_id_voto); 
    Questo ti restituisce un array il cui indice ID contiene la somma dei voti. E' un po inutile in quanto ti conviene fare un SELECT direttamente con il WHERE id = $id, ma se ti è più comodo così...vedi tu.

  9. #9
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Originariamente inviato da cic_ccio
    Infatti nn posso farlo da mysql;alcuni dati sono:

    ID vote_1 vote_2 vote_3 votea_4 vote_5
    59 152 0 1500 33 23

    60 78 8 0 4 1

    Dovrei fare la somma dei voti x ID... per l'ID 59 la somma è 1708 e per il 60 è 91....
    quindi dovrei creare un array di questo tipo (59=>1708, 60=>91 ecc) e poi metterlo in ordina crescente a seconda del voto totale
    Ora è tutto più chiaro:

    Codice PHP:
    <?php

    $sql 
    "SELECT * FROM tabella_voti ORDER BY id ASC";
    $result mysql_query($sql);
    while(
    $row mysql_fetch_array($result))
    {
        
    $voto_tot $row['voto_1'] + $row['voto_2'] + $row['voto_3'] + $row['voto_4'] + $row['voto_5'];
        
    $ar_id_voto[$row['id']] = $voto_tot;
        
    arsort($ar_id_voto);
    }

    print_r($ar_id_voto);

    ?>
    Ecco fatto ^^

  10. #10
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Ahhhh!!! Allora se devi solo fare la somma e ordinarlo decrescente, puoi farlo direttamente da mysql.

    Codice PHP:
    SELECT DISTINCT ID, (vote_1 vote_2 vote_3 vote_4 vote_5) as tot
    FROM tabella_voti
    ORDER BY tot DESC 
    Fammi sapere

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.