Ciao,
prima di tutto io eviterei di fare un NOT IN... non è affatto performante e quindi quando non è necessario (come mi pare in questo caso) meglio lasciarlo perdere
Allora,
tu hai due date
arrivo :2011-10-30
partenza 2011-11-05
vuoi vedere quali camere libere ci sono per la tipologia 1
quindi in prenotazioni deve cercare le camere che:
- hanno data di arrivo e data di partenza vuota (non sono state prenotata)
oppure
- hanno la data di partenza <= 2011-10-30 (prenotate ma partono prima dell'arrivo <= così prendi anche il giorno della partenza la mattina)
oppure
-hanno la data di arrivo >2011-11-05 (è prenotate ma dopo la partenza)
Infine devono avere tipologia 1
quindi:
----------------
SELECT cam.*
FROM camere cam, prenotazioni pre
WHERE
(
(pre.data_arrivo IS NULL AND pre.data_partenza IS NULL)
OR pre.data_partenza <= '2011-10-30'
OR pre.data_arrivo >'2011-11-05'
)
AND cam.id=pre.id_camera_assegnata
AND pre.id_tipo_camera=cam.id
AND cam.id=1
---------------------
L'ho fatta a memoria senza provarla, magari c'è qualche errore di sintassi
ma il concetto dovrebbe essere proprio questo...

Rispondi quotando