Buscar alojamiento gratuito
-
12-09-2019 - |
Pregunta
Necesito ayuda con una consulta? Tengo 2 tablas de reservas y unidades entre otros. reservas tabla tiene columnas Resid, rfrom (fecha y hora), RTO (fecha y hora), el estado (int), UnitID (clave externa). Estado 2 significa que es confirmado. Necesito conseguir todas las unidades libres en el período pedido, consulta tiene que devolver sólo que las unidades para las que no no se confirmó reservas (estado == 2) en el periodo solicitado (no existen). Estoy trabajando con el marco de la entidad lo que debe ser consulta eSQL (otra opción es usar procedimiento almacenado pero quiero evitar eso). Es la base de datos SQL 2005 expreso. También consulta debe filtrar las unidades en función de los valores de las unidades de mesa, pero eso no es un problema. Puedo hacer eso con LINQ en los resultados de la consulta (múltiples donde las declaraciones).
editar: Esta consulta está trabajando:
select * from Units where
not exists (select *
from Reservations
where Reservations.unitID = Units.unitID
and Reservations.status = 2
and (@datefrom between Reservations.rfrom and Reservations.rto-1
or @dateto between Reservations.rfrom+1 and Reservations.rto
or rfrom between @datefrom and @dateto-1
or rto between @datefrom+1 and @dateto))
and Units.category=@cat
¿Cómo se vería en SQL entidad? podría hacerlo con LINQ? nombres de entidad son las mismas que las tablas.
Solución
termino usando procedimientos almacenados ...
Otros consejos
select value u from AEDMEntities.Units as u WHERE
not exists (select value r from AEDMEntities.Reservations as r
where r.Unit.unitID = u.unitID and r.status = 2 AND
(datetime '2009-7-7 00:00'between r.rfrom and r.rto
or datetime '2009-7-7 00:00' between r.rfrom and r.rto
or r.rfrom between datetime '2009-7-7 00:00'and datetime '2009-7-27 00:00'
or r.rto between datetime '2009-7-7 00:00' and datetime '2009-7-27 00:00'))
AND u.category=3
Esto está funcionando. Pero no puedo escribir -1 o +1 a restar / add día como en SQL! ¿Cómo lograr que, sólo necesito para que sea parametrizada. La unidad es la clase abstracta que consta de 2 clases derivadas aplicación y habitaciones (tabla según el tipo de herencia), así que necesito para devolver sólo aplicaciones o habitaciones en función de parámetros de entrada método bienvenida a cualquier idea.