Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Riorganizzare dati ricevuti da query

    Ho una query tipo questa:
    codice:
    $query = "
    	SELECT * FROM table
    	WHERE campo = qualcosa
    	GROUP BY data, periodo, valuta
    	ORDER BY id DESC
    ";
    Che restituisce una tabella tipo questa
    Codice PHP:
    while($row=mysql_fetch_array($result))
    {
    echo 
    "<tr><td>$data</td><td>$periodo</td><td>$valuta</td><td>$valore</td></tr>";

    2/23/2011    Morning    GBP    863.636
    2
    /23/2011    Morning    EURO    1021.47
    2
    /23/2011    Morning    USD    1401.25
    2
    /22/2011    Evening    GBP    866.31
    2
    /22/2011    Evening    EURO    1023.37
    2
    /22/2011    Evening    USD    1401
    2
    /22/2011    Morning    GBP    862.453
    2
    /22/2011    Morning    EURO    1024.84
    2
    /22/2011    Morning    USD    1394.5
    2
    /21/2011    Evening    GBP    864.715
    2
    /21/2011    Evening    EURO    1026.56
    2
    /21/2011    Evening    USD    1403
    2
    /21/2011    Morning    GBP    862.824
    2
    /21/2011    Morning    EURO    1023.62
    2
    /21/2011    Morning    USD    1399.5 
    Ecco mi piacerebbe impaginarli in questo modo (non sto a variare i numeri... della tabella... ):

    codice:
    DATA      |          Morning            |           Evening
              | USD       EUR       GBP     | USD        EUR        GBP
    2/23/2011 | 1401.25   1021.47   863.636 | 1401.25    1021.47    863.636
    2/22/2011 | 1401.25   1021.47   863.636 | 1401.25    1021.47    863.636
    2/21/2011 | 1401.25   1021.47   862.453 | 1401.25    1021.47    863.636
    ... ...   |
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  2. #2
    prova a fare un left join sulla stessa tabella tramite il campo data non mettere il group by.

    SELECT * FROM table t1
    LEFT JOIN table t2
    ON t1.data = t2.data
    WHERE t1.periodo = Morning AND t2.periodo=Evening
    ORDER BY id DESC
    /*no comment*/

  3. #3
    Avevo messo il Gruop By perchè ci sono delle ripetizioni nelle date (con gli stessi valori) in quanto i valori vengono prelevati dalla fonte più volte

    Esempio della tabella completa:
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  4. #4
    Aggiungo:
    il select deve essere così:
    SELECT t1.data data_m, t1.valuta valuta_m, t1.valore valore_m, t2.data data_e, te.valuta valuta_e, t2.valore valore_e

    STAMPA:
    <table>
    <tr>
    <td>data</td>
    <td coolspan=2>Morning</td>
    <td coolspan=2>Evening</td>
    </tr>
    while($row=mysql_fetch_array($result))
    {
    echo "<tr>
    <td>$data_m</td>
    <td>$valuta_m</td>
    <td>$valore_m</td>
    <td>$valuta_e</td>
    <td>$valore_e</td>
    </tr>";
    }
    /*no comment*/

  5. #5
    Originariamente inviato da ricman
    Avevo messo il Gruop By perchè ci sono delle ripetizioni nelle date (con gli stessi valori) in quanto i valori vengono prelevati dalla fonte più volte

    Esempio della tabella completa:


    quei valori non devono essere presenti nel DB!! distingui le tuple solo dall'id e l'id in questo caso serve solo come chiave primaria, sicuramente inserito per non fare una chiave primaria composta, giusto?

    secondo devi fare uno script che ti elimini i duplicati
    /*no comment*/

  6. #6
    Originariamente inviato da fgiovanni
    quei valori non devono essere presenti nel DB!! distingui le tuple solo dall'id e l'id in questo caso serve solo come chiave primaria, sicuramente inserito per non fare una chiave primaria composta, giusto?

    secondo devi fare uno script che ti elimini i duplicati
    Quei valori ci sono ... ... perchè io ho un cronjob che esegue il recupero valori in 6 volte al giorno (i valori effettivi sarebbero 2 volte algiorno!!). Non chiedermi il Perchè... l'hanno voluto così dicendo "non si sa mai... se gli oroglogi non sono sincronizzati..."... Boh ... mi sono adeguato.

    Per ora avrei anche risolto... MA non da query ... Ho fatto da php con tutta una serie di If sul controllo della data e poi Se il periodo è Morning ... etc etc ...

    Non so' quale delle due sia la soluzione migliore però ...
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  7. #7
    allora ti consiglio di distinguere le letture giornaliere! che succede sei hai dei dati diversi tra le 2 letture? nella query quale prendi?
    adesso non sarà mai capitato, ma se capita, la query ti restituisce dei dati sbagliati come fai a distinguerli?
    è un problema che deve essere previsto!
    /*no comment*/

  8. #8
    Eh già...hai ragione. Al momento mi baso sull'id più recente.

    So' per certo che i dati saranno i medesimi, però in effetti un controllo del genere sarebbe d'obbligo.
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

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.