Quei select controllo camere disponibili e prezzi

di il
1 risposte

Quei select controllo camere disponibili e prezzi

Buongiorno a tutti sono nuovo in questo forum e neofita di php.
Ho un problema con una quei che non riesco a completare.
La ricerca della disponibilità della camera la fa correttamente ma il controllo se esistono dei prezzi nella tabella prezzi in riferimento alle date selezionate non funge...

Questa è la query di ricerca e funziona:
$sql="SELECT * FROM camere AS c WHERE adulti >='$adulti' AND bambini >='$bambini' AND c.camere_city='".$_SESSION['cityid']."' AND c.camere_status='A' AND camere_startdate <=now() AND camere_enddate > now() AND c.camere_id NOT IN ( SELECT p.cameraid FROM camereprenotate AS p WHERE ( p.stato='A' AND p.data_partenza > $data_post_arrivo_convertita AND p.data_arrivo < $data_post_partenza_convertita ) OR ( p.stato='A' AND p.data_partenza <= $data_post_arrivo_convertita AND p.data_partenza >= $data_post_partenza_convertita )) ";
poi ho aggiunto avendo una tabella prezzi la seguente query che non la considera :
AND c.camere_id IN ( SELECT pr.roomid FROM prezzi AS pr WHERE pr.Start_date_str >= $data_post_arrivo_convertita AND pr.End_date_str <= $data_post_partenza_convertita ) 
in sostanza ho unito le query in questo modo:
$sql="SELECT * FROM camere AS c WHERE adulti >='$adulti' AND bambini >='$bambini' AND c.camere_city='".$_SESSION['cityid']."' AND c.camere_status='A' AND camere_startdate <=now() AND camere_enddate > now() AND c.camere_id NOT IN ( SELECT p.cameraid FROM camereprenotate AS p WHERE ( p.stato='A' AND p.data_partenza > $data_post_arrivo_convertita AND p.data_arrivo < $data_post_partenza_convertita ) OR ( p.stato='A' AND p.data_partenza <= $data_post_arrivo_convertita AND p.data_partenza >= $data_post_partenza_convertita )) AND c.camere_id IN ( SELECT pr.roomid FROM prezzi AS pr WHERE pr.Start_date_str >= $data_post_arrivo_convertita AND pr.End_date_str <= $data_post_partenza_convertita ) ";
ma mi da lo stesso camere disponibili anche se non ci sono prezzi assegnati nella tabella prezzi.
In sostanza la prima controlla la disponibilità e la seconda dovrebbe verificare se ci sono tutti i prezzi assegnati per quella disponibilità.

Spero di essere stato chiaro nella spiegazione del problema e che qualcuno possa aiutarmi a trovare quale sia l'errore.

1 Risposte

  • Re: Quei select controllo camere disponibili e prezzi

    Hai provato ad usare i JOIN tra tabelle invece dell'IN?
    Mi pare che IN serva solo per confrontare più valori insieme di un campo in un WHERE e non è quello che stai cercando di fare.
    Se non ho capito male stai cercando di unire i dati provenienti da due tabelle e per questo devi usare JOIN.
    LEFT RIGHT o INNER a seconda del tipo di relazione.
    Occhio che se la relazione è uno a molti (uno-camere a molti-prezzi) le tuple per le camere potrebebro duplicarsi tanti quanti sono i prezzi legati dall'ID.
    Diverso se hai molti-camere a uno-prezzi.
Devi accedere o registrarti per scrivere nel forum
1 risposte