Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55

    Select SUM() su id variabile

    Ciao a tutti.

    Dopo 3 ore che leggo manuali e forum(soprattutto questo), in particolare sul SELECT SUM, vedo che tutti
    devono sommare tabelle diverse con condizioni uguali (ES: SELECT aaaa WHERE id=1 UNION SELECT bbbb WHERE id=1 UNION ... )

    Ma come faccio io a fare un SUM di row[4] (INT) su 5 record con id diverso ?

    [/QUOTE]
    connect bla bla ...

    $p_1=trim($_POST['select1']);
    $p_2=trim($_POST['select2']);
    $p_3=trim($_POST['select3']);
    $p_4=trim($_POST['select4']);
    $p_5=trim($_POST['select5']);
    $query = "SELECT * FROM tabella WHERE id='$p_1' UNION SELECT * FROM Tabella WHERE id='$p_2' UNION SELECT * FROM Tabella WHERE id='$p_3' UNION SELECT * FROM Tabella WHERE id='$p_4' UNION SELECT * FROM Tabella WHERE id='$p_5'";
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    {
    echo "$row[1]
    $row[2]
    $row[3]
    $row[4]";
    }
    ...

    [/QUOTE]


    Grazzzzie 1000000000 !!!

  2. #2
    con tutti i dubbi di dare valori diversi alle parole usate....

    se fai un SUM() non ha senso dividerlo per id, poiche' gli id sono univoci. La query che presenti tu non evidenzia alcun SUM().

    Se invece di fare UNION fai un
    select * from tabella where id IN(1,2,3,4,5)
    sarebbe poi la stessa cosa.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55
    Ciao

    La query che presenti tu non evidenzia alcun SUM().
    Infatti ho messo la query "nuda" che sto utilizzando adesso, senza SUM()

    Se invece di fare UNION fai un
    select * from tabella where id IN(1,2,3,4,5)
    Ottimo. Questo semplifica il codice

    ... ma non risolvo il problema.

    con la prima query

    $query = "SELECT * FROM tabella WHERE id IN('$p_1','$p_2','$p_3','$p_4','$p_5')";
    Creo una pagina PHP con un elenco :

    es:

    id nome cogn anni citt
    ----------------------------
    id1 mario rossi 32 roma
    id2 marcello lippi 36 vicenza
    id3 pietro verdi 21 palermo
    id5 leone dilernia 33 firenze



    In fondo a questa pagina vorrei mettere una riga con "totale" del tipo:

    $totale=(id1.$row[4]+id3.$row[4]+id3.$row[4]+id4.$row[4]+id5.$row[4]+)
    Nota: quello sopra non è SQL , è solo la rappresentazione di quello che intendo.

    Avevo pensato ad una cosa tipo

    SELECT SUM($row[4]) AS temp_anni FROM tabella WHERE id IN($p_1,$p_2, eccc)
    ma , ovviamente, niente da fare

  4. #4
    la somma deve avere un raggruppamento, mentre tu vuoi riga per riga il result set e la somma di un valore presente tra tutti i result set.

    Carica il dato in un array e poi lo sommi con l'apposita funzione array_sum()

    se non sai come fare posta lo script che usi e vediamo di inserirlo. Sara' qualcosa di simile:

    while( $row = eccetera

    $tot[] = $row[4];

    fine while

    echo $totale = array_sum($tot);

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55
    beh ... FUNZIONA!!!!

    $query = "SELECT * FROM tabellaWHERE id IN('$p_1','$p_2','$p_3','$p_4','$p_5')";
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))

    {
    echo "$row[1],$row[2]";

    $tot[] = $row[2];
    }
    echo $totale = array_sum($tot);
    mysql_close($db);
    Praticamente vuoi dirmi che con la sola riga $tot[] = $row[2] dico a php di prendere ad ogni ciclo while il valore di $row[2] e di inserirlo come elemento di un array?

    Alla faccia di essere sintetici .....

    Beh ... grazie 1000

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.