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

Discussione: query complicata

  1. #1
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837

    query complicata

    Buonasera a tutti,
    devo realizzare un query che prelevi i dati relativi ad un intervallo di date inserito.


    La tabella è del tipo:
    TABLE meteo:
    ID | TEMPERATURA | PRESSIONE | DATETIME
    1 | 20.1 | 20.00 | 2008-09-01 00:15:00
    2 | 20.2 | 20.00 | 2008-09-01 00:30:00
    3 | 20.2 | 20.00 | 2008-09-01 00:45:00
    ...| .....................| .......... | ............................
    N | 20.2 | 20.00 | 2008-09-30 23:45:00

    in pratica dovrei fare una query che mi prelevi la media e il max della temperatura di ogni singolo giorno, il range di giorni viene definito dall'utente.
    ho provato così ma nulla
    Codice PHP:
    $data_inizio $_POST["data_inizio"]; //del tipo 01-09-2008
     
    $data_fine $_POST["data_fine"]; // del tipo 05-09-2008

    $query "SELECT MAX(temp) AS maggiore, date_format(datetime,'%d-%m-%Y') as giorno from meteo WHERE date_format(datetime,'%d-%m-%Y') BETWEEN '$data_inizio' AND '$data_fine' GROUP BY giorno ORDER BY datetime"
    In pratica dovrei ottenere la temperatura massima per i giorni scelti dall'utente.
    Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    La tua query non funziona già?

  3. #3
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    diciamo quasi , in pratica oltre a visualizzarmi i valori appartenenti al range di date, mi fa visualizzare altri valori di altre date. non so dove va a prendere quelle date?!

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Mi sembra strano. Ti estrae date maggiori del range che imposti, date inferiori, entrambe?

  5. #5
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    ti faccio un esempio:
    se imposto un range di date del tipo 15-03-2008 al 16-03-2008, mi restituisce queste date:

    16-02-2008
    15-03-2008
    16-03-2008
    15-04-2008
    15-05-2008
    15-06-2008
    15-07-2008
    15-08-2008
    15-09-2008

    Grazie.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Fai una cosa, rigira la query così

    codice:
    SELECT MAX(temp) AS maggiore, 
    date_format(datetime,'%d-%m-%Y') as giorno 
    from meteo 
    WHERE date_format(datetime,'%Y-%m-%d') BETWEEN 
    '2008-03-15' AND '2008-03-16' 
    GROUP BY giorno ORDER BY datetime

  7. #7
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    Come al solito mi inchino ! Sei un grande, cmq mi ero quasi avvicinato

    Se non ti dispiace ti chiedo un'ultima cosa, se volessi far visualizzare tutte le temperature di ogni 15 minuti di un giorno sempre con il range di date selezionato.

    Codice PHP:
    TABLE meteo:
    ID TEMPERATURA PRESSIONE DATETIME
    20.1 20.00 2008-09-15 00:15:00
    20.2 20.00 2008-09-15 00:30:00
    20.2 20.00 2008-09-15 00:45:00
    ...| .....................| .......... | ............................
    20.2 20.00 2008-09-30 23:45:00 
    in pratica dovrei stampare la tabella del db come la vedo.
    Grazie di nuovo.

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Non ho capito. Ma hai solo quelle di temperature (cioè una ogni 15 minuti) o ce ne sono altre che devi escludere?

    Se hai solo quelle non è sufficiente selezionare l'intervallo e ordinarle in senso crescente?

  9. #9
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    in pratica ci sono altri valori che vengono registrati all'interno del db, quali temperatura, pressione, umidità..... questi valori vengono registrati in una riga della tabella ogni 15 minuti.

    In pratica vorrei permettere all'utente di fare una ricerca sia per giorno che per orari.

    ovviamente quando l'utente selezione la ricerca per orari dovrà specificare anche il range dell'or, quindi si avranno due variabili di questo tipo.

    $data_inizio = "2008-09-15 00:15:00 ";
    $data_finre = "2008-09-18 00:15:00";

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    codice:
    /* ricerca per giorno */
    select * from meteo
    where date_format(datetime,'%Y-%m-%d')
    between '2008-09-15' AND '2008-09-18' 
    order by datetime
    
    /* ricerca per giorno e orario */
    select * from meteo
    where datetime
    between '2008-09-15 00:15:00' AND '2008-09-18 00:15:00' 
    order by datetime

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.