• User

    query mysql con calcoli

    Salve,

    sto cercando, ma invano e disperatamente, di scrivere in un file php una query al database che istruisca una sottrazione tra 2 records appartenenti allo stesso campo di una determinata tabella ma ordinati cronologicamente ...

    Grazie

    Nik


  • Super User

    ??? forse intendevi "due campi dello stesso record"'??

    in tal caso dovresti solo fare una roba simile....

    select Campo2-Campo1 AS risultato FROM NomeTabella

    o intendevi "lo stesso campo ma di due record diversi"???
    in tal caso mi sa che devi lavorare con due variabili:

    non so se in MySql si fa così, ma in SQL Server sì...

    DECLARE @a
    DECLARE @b
    DECLARE @tot
    Select @a=Campo FROM NomeTabella WHERE ID= 1234 --(o altro criterio per selezionare il tuo record...)
    Select @b=Campo FROM NomeTabella WHERE ID= 9876
    @tot=@a-@b

    (non sono sicuro che MySql supporti questa sintassi..ma se non è così è molto simile...)


  • User

    Ciao,

    grazie per la risposta.
    Si tratta di due records diversi ma appartenenti allo stesso campo.
    Non conosci la query in Mysql

    In effetti sto cercando di inserire le quotazioni di borsa sul mio sito. Mi interessa saper come si scrive in PHP (ho il phpnuke) la formula che consenta di calcolare la variazione percentuale quotidiana sui titoli, ricercare i migliori/peggiori cinque della giornata ed infine calcolare i livelli di Pivot giornalieri che scaturiscono dal calcolo dei valori di chiusura, massimo e minimo di giornata.

    FORMULA PIVOT POINT
    Resistance 3 = High + 2*(Pivot - Low)
    Resistance 2 = Pivot + (R1 - S1)
    Resistance 1 = 2 * Pivot - Low
    Pivot Point = ( High + Close + Low )/3
    Support 1 = 2 * Pivot - High
    Support 2 = Pivot - (R1 - S1)
    Support 3 = Low - 2*(High - Pivot)

    FORMULA CALCOLO PERCENTUALE
    (valore_oggi - valore_ieri)/valore_ieri *100= x%

    Ringrazio anticipatamente

    NIK


  • User

    Ciao,

    ho provato ad adattarlo al mysql e a scrivere la query in php,
    ma non ci sono riuscito.

    Poichè i numeri da sottrarre cambiano di giorno in giorno e a me servono solo l'ultimo (di oggi) ed il penultimo (di ieri) dello stesso campo cosa va indicato
    in @a e @b che vengono prelevati dallo stesso campo?

    Grazie

    Nik


  • Super User

    non puoi usare la funzione MAX per prendere l'ultimo dato odierno?


  • User

    Ti ringrazio per l'aiuto,

    devo estrarre il dato di oggi e il dato di ieri e tirare fuori questo:

    (dato_oggi - dato_ieri)/dato_ieri *100 (cioè la percentuale di variazione giornaliera)

    il risultato andrebbe poi inserito in una cella di una tabella dove confluiscono altri dati ma che che non hanno bisogno di calcoli (testo)

    il campo da cui prelevare in mysql si chiama 'chiusura'

    Non so come organizzare la query in php ... sono imballato

    Nik


  • Super User

    vediamo....

    da principiante assoluto di php ho provato a creare una tabella test con due campi (chiusura e data)

    ho fatto una roba del genere e sembra funzionare...

    <?php
    $sql_ieri="SELECT chiusura FROM test where Data='2007-05-09 00:00:00'";
    $d_ieri = mysql_query($sql_ieri,$conn)
    or die( "Errore: " . mysql_error() );

    $sql_oggi="SELECT chiusura FROM test where Data='2007-05-10 00:00:00'";
    $d_oggi = mysql_query($sql_oggi,$conn)
    or die( "Errore: " . mysql_error() );

    // Estrazione del risultato
    $dato_ieri = mysql_fetch_row($d_ieri);
    $dato_oggi = mysql_fetch_row($d_oggi);

    echo ($dato_oggi[0]-$dato_ieri[0])/$dato_ieri[0]*100
    ?>

    a me funziona, ovviamente le date le devi estrarre con la apposita funzione che ti retituisice la data odierna (che non so come è in MySql, ma in SqlServer è "GETDATE()"...)


  • User

    Grazie

    lo provo e ti faccio sapere

    Nikk