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

Discussione: problema con query

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    272

    problema con query

    Buon giorno a tutti,
    spero ci sia qualcuno che possa aiutarmi.
    Ho la seguente tabella [camere_occupate]:


    id - hotel - tipo_camera - num_camera - prezzo - data1(dal) - data2(al)

    12 - casarossa - singola - 105 - 70,00 - 23/05/2006 - 25/05/2006
    13 - casarossa - matrimoniale - 120 - 90,00 - 18/05/2006 - 20/05/2006
    14 - casarossa - matrimoniale - 120 - 90,00 - 21/05/2006 - 22/05/2006



    Con un modulo chiedo la disponibilità per:

    1 stanza matrimoniale
    arrivo 19/05/2006
    partenza 25/05/2006


    La camera ovviamente è occupata. Ho bisogno di estrarre le camere occupate nella data richiesta, ho provato con :

    SELECT *
    FROM camere_occupate
    WHERE data1 between arrivo and partenza or data2 between arrivo and partenza

    oppure con :

    SELECT *
    FROM camere_occupate
    WHERE data1 >= arrivo and data2 <= partenza or data1 <= arrivo and data2 <= partenza
    or data1 <= arrivo and data2 >= partenza

    non funzionano entrambe. sapreste dirmi qual è la query corretta?

  2. #2
    ma la data in che formato la cerchi?

    gg/mm/aaaa (italiano)

    oppure

    mm/gg/aaaa (inglese)

    solitamente il server del db è installato in inglese quindi bisogna fare le ricerche delle date in inglese.

    Poi prova anche con le parentesi

    SELECT *
    FROM camere_occupate
    WHERE (data1 >= arrivo and data2 <= partenza) or (data1 <= arrivo and data2 <= partenza)
    or (data1 <= arrivo and data2 >= partenza)

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    272
    ho provato con le parentesi, ma non funziona. Per quanto ruguarda il formato della data, non credo sia questo il problema perchè il risultato lo dà ma delle camere sbagliate. L'erroe è solo sulla query.

  4. #4
    hai provato a fare le singole query?
    SELECT *
    FROM camere_occupate
    WHERE data1 between arrivo and partenza or data2 between arrivo and partenza

    prova a vedere cosa ti restituiscono queste due singole
    perchè nel primo caso è sicuro che non trova niente nella prima mentre nella seconda lo dovrebbe trovare

    SELECT *
    FROM camere_occupate
    WHERE data1 between arrivo and partenza


    SELECT *
    FROM camere_occupate
    data2 between arrivo and partenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    272
    scusami, ma non capisco, se faccio due query separate, come faccio poi ad unire il risultato?
    Probabilmente non ho capito.

  6. #6
    è solo una prova magari sbagli solo qualcosa che insieme non te ne rendi conto.


    SELECT camere.*
    FROM camere
    where (data1 between arrivo and partenza) or (data1 between arrivo and partenza);

    Io ho provato e mi restituisce le stanze corrette.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    272
    ho scritto come mi suggerisci:

    SELECT *
    FROM camere_occupate
    WHERE (data1 between arrivo and partenza) or (data2 between arrivo and partenza);

    ma non restituisce nessuna camera, in nessun caso

  8. #8
    immagino che arrivo e partenza siano variabili
    quindi è la sintassi della query scritta male...

    SELECT *
    FROM camere_occupate
    WHERE data1 >= "&arrivo&" and data2 <= "&partenza&" or data1 <= "&arrivo&" and data2 <= "&partenza&"
    or data1 <= "&arrivo&" and data2 >= "&partenza&"

    Ovviamente lo stesso vale con between
    Ah, Jedis! I had no ideas! What can i do for you, honored Jedis?

    I'm not Jedi. I'm a guy with a lighsaber and a few questions.

  9. #9
    lo sò che può essere una risposta molto ma molto banale, ma la tua qery non riportava tali "accorgimenti" quindi... visto mai :P
    Ah, Jedis! I had no ideas! What can i do for you, honored Jedis?

    I'm not Jedi. I'm a guy with a lighsaber and a few questions.

  10. #10
    infatti prova a scrivere la query proprio con i dati corretti

    questa è per access

    SELECT *
    FROM camere
    WHERE (data1 between #05/19/2006# and #05/25/2006#) or (data2 between #05/19/2006# and #05/25/2006#);


    questa è per sql

    SELECT *
    FROM camere
    WHERE (data1 between '05/19/2006' and '05/25/2006') or (data2 between '05/19/2006' and '05/25/2006');

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.