Muchas gracias Lepe por refrezcarme la memoria. Me había olvidado de la sentencia IN. De que se necesitaba dos select eso lo tenía claro.
Tengo que reconocer que no sabía que la sentencia IN sea ineficiente. Pero si es que no son muchos los registros con que maneja anubis, no creo que sea tan afectado.
Ahora, tengo una duda. ¿No debería compararse también con la fecha de reserva? Porque por lo que tengo entendido, cuando uno solicita una reserva es cuando se debe determinar cuales están libres:
Código SQL
[-]select codhabitacion
from habitacion
where codhabitacion not in
( select codhabitacion from reservas
where (fechaentrada between :fini and :ffin)
and fechareserva <= :ahora)
and estado = 'libre'
El :ahora se trataría de la fecha actual (pasada como parámetro). Lo que yo ando considerando es que no sólo se restrinja a un rango sino que no haya una reserva previa a las fechas.
No se.. en una de esas estoy confundido.
Y el tema me está interesando... y me dejó "picando".
Al igual que anubis, voy a ver cuales son las opciones... creo y considero que yo también necesito aprender.
Saludos,