• User

    Sottrazione tra risultati

    Ciao,

    devo fare questa sottrazione:

    $dato = prezzo_oggi - prezzo_di 10 records prima;

    Non so come richiamare dal db il secondo cioè il sottraendo ...

    Consigli?

    Grazie e buon lavoro

    :xNik


  • User

    Ciao nik...

    penso che nessuno possa esserti di aiuto (io compreso) se non ci dai più informazioni riguardo la tabella nel db e/o parte del codice.

    Posta qualcosa che ti aiutiamo 😉


  • Super User

    @nik06 said:

    Ciao,

    devo fare questa sottrazione:

    $dato = prezzo_oggi - prezzo_di 10 records prima;

    Non so come richiamare dal db il secondo cioè il sottraendo ...

    Consigli?

    Grazie e buon lavoro

    :xNik

    Secondo me dovresti fare due query:
    la prima richiama i "prezzo_oggi"
    la seconda i "prezzo_di 10 records prima"
    Poi sottrai.


  • User

    Sì, è quello che sto cercando di fare ma mi risulta un pò difficile scrivere tutte e due le query, la sottrazione invece è Ok.

    $dato = ($prezzo_oggi - $prezzo_10 records prima);

    poi la variabile $dato la inserisco per esempio in una tabella.

    Se puoi aiutarmi a scrivere le query, grazie.

    Nik


  • Super User

    @nik06 said:

    Sì, è quello che sto cercando di fare ma mi risulta un pò difficile scrivere tutte e due le query, la sottrazione invece è Ok.
    Anche a me risulta difficile aiutarti se non mi dai piu informazioni.
    Puoi fare cosi.
    Prima query selezioni i "prezzi_oggi"
    Salvi in un array $arr1
    Seconda query selezioni i prezzi di 10 giorni fa
    Salvi in un array $arr2
    for ($i=0;$i<10;$i++)
    $diff*] = $arr1*-$arr2*


  • User

    Come faccio a selezionare il prezzo di dieci giorni fa?

    Cosa va scritto nella query?

    $prezzo_10giornifa = "SELECT prodotto, timeStamps, prezzo, FROM tabella WHERE prodotto = '$prodotto' ORDER BY timeStamps DESC LIMIT 10";

    è così che si estrae il prezzo del decimo giorno? oppure in questo modo mi estrae solo gli ultimi dieci records, dal primo al decimo?

    Nik


  • User

    Sto provando in questo modo:

    $oggiedieci = "SELECT prodotto, timeStamps, prezzo FROM tabella WHERE prodotto = '$prodotto' ORDER BY timeStamps DESC LIMIT 10";
    $d_oggiedieci = $db->sql_query($oggiedieci);
    $row = $db->sql_fetchrow($d_oggiedieci);
    $dato_oggi = $row['prezzo'];
    $row = $db->sql_fetchrow($d_oggiedieci,9,'prezzo');
    $dato_dieci = $row['prezzo'];
    $diff = ($dato_oggi - $dato_dieci);
    $diff = number_format($diff, 3, '.', '');
    if ($diff>0.0) {
    $out="<font class="">+" . $diff . "</font>";
    }
    else if ($diff<0.0) {
    $out="<font class="">. $diff . "</font>";
    }
    else {
    $out="<font class=""> 0.00</font>";
    }

    ma la differenza la fa tra gli ultimi due records.

    Consigli su come far prendere il decimo record?

    Nik


  • Super User

    ogni riga della tabella è relativa ad un giorno?
    Ossia:
    riga 1: 2 Agosto
    riga 2: 3 Agosto
    riga 3: 4 Agosto
    etc...


  • User

    Ciao,

    se in php hai la data come timestamp non formattato (un numero es. questo: 85947388500) allora puoi trovare la data di 10 giorni fa prendendo la data di oggi (es quel numero) e sottraendoci (864000 che risultato di (86400*10) cioè il valore di 10 gg in timestamp)

    Dopodiche potresti fare una ricerca con questi valori.


  • User

    Scusate il ritardo,

    sono stato fuori.

    Rispondo ad Ayrton2001:

    sì, ogni riga della tabella si riferisce a un giorno.

    Rispondo a federico.p:

    il timestamp non è formattato, si presenta così: 20070821.

    Ho fatto una cosa di questo tipo richiamando le 10 righe (mi sono fermato alla terza):

    $primoedecimo = "SELECT campo1, timeStamps, campo3 FROM tabella WHERE campo1 = '$campo1' ORDER BY timeStamps DESC LIMIT 10";
    $d_primoedecimo = $db->sql_query($primoedecimo);
    $row = $db->sql_fetchrow($d_primoedecimo);
    $dato_oggi = $row['campo3'];
    $row = $db->sql_fetchrow($d_primoedecimo);
    $dato_due = $row['campo3'];
    $row = $db->sql_fetchrow($d_primoedecimo);
    $dato_tre = $row['campo3'];

    e così via fino a richiamare il decimo giorno. Secondo voi si può accorciare?

    $diff = ($dato_oggi - $dato_dieci);
    $diff = number_format($diff, 3, '.', '');