Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    Recupero intervallo date mysql

    Salve,

    ho una tabella strutturata in questo modo:



    dovrei creare una query che dato una determinata data_inizio e data_fine mi stampi 0 oppure 1 a seconda della disponibilità.
    Ad esempio se inserisco un intervallo 2009-03-31 11:00:00 e 2009-03-31 13:00:00 mi deve stampare 1 perchè in quella fascia oraria c'è già un record (id = 42).
    Mentre se inserisco un intervallo 2009-03-31 11:00:00 e 2009-03-31 12:00:00 mi deve stampare 0 poichè non vi è nessuna fascia oraria che occupa la mia.

    Qualcuno sà dirmi che tipo di query dovrei fare?

  2. #2
    Esegui un COUNT() con la condizione WHERE che hai indicato. In PHP ti basta un IF per sapere se ci sono o meno record nell'intervallo.

  3. #3
    Utilizzando count(id), però torna solo 1 result

  4. #4
    Ho provato con questa query:

    codice:
    SELECT count(id) , data_inizio, data_fine FROM prenotazioni WHERE data_inizio >= '2009-03-31 11:00:00' AND data_fine <= '2009-03-31 13:00:00' group by id
    ma non ritorna nessun risultato. Come mai?

  5. #5
    Up!!!

  6. #6
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    penso che il count non ti serva, prova così:

    Codice PHP:
    $query ="SELECT data_inizio, data_fine FROM prenotazioni WHERE data_inizio >= '2009-03-31 11:00:00' AND data_fine <= '2009-03-31 13:00:00' ";
    $result mysql_query($query);
    echo 
    $num_rows mysql_num_rows($result); 

  7. #7
    Perchè far caricare un intero recordset a MySQL e al web server invece di una sola riga contenente l'informazione che serve realmente?

  8. #8
    penso che il count non ti serva, prova così: codice PHP: $query ="SELECT data_inizio, data_fine FROM prenotazioni WHERE data_inizio >= '2009-03-31 11:00:00' AND data_fine <= '2009-03-31 13:00:00' "; $result = mysql_query($query); echo $num_rows = mysql_num_rows($result);
    Questa query non torna nulla.

    Perchè far caricare un intero recordset a MySQL e al web server invece di una sola riga contenente l'informazione che serve realmente?
    Purtroppo come diceva zappaterreno87
    Utilizzando count(id), però torna solo 1 result
    Il mio problema fondamentale è quello di gestire l'overlap tra le date.
    Con la seguente query
    Codice PHP:
    SELECT count(id) , data_iniziodata_fine FROM prenotazioni WHERE data_inizio >= '2009-03-31 11:00:00' AND data_fine <= '2009-03-31 13:00:00' group by id 
    non ottengo nessun risultato!
    Invece dovrei ottenere il record avente id 42 poichè la data è compresa tra 2009-03-31 12:30:00 e 2009-03-31 13:30:00.

  9. #9
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    sicuro che la mia query non restituisce nulla?
    Codice PHP:
     $query ="SELECT data_inizio, data_fine FROM prenotazioni WHERE data_inizio >= '2009-03-31 11:00:00' AND data_fine <= '2009-03-31 13:00:00' "$result mysql_query($query); echo $num_rows mysql_num_rows($result); 

  10. #10
    si, purtroppo non restituisce nulla. Sembra strano anche a me!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.