Мне нужна помощь с запросом?
У меня есть 2 таблицы бронирования и единиц среди других.
В таблице резервирования есть столбцы ResId, rfrom (дата / время), rto (дата / время), состояние (int), UnitID (внешний ключ).
Статус 2 означает его подтвержденный.
Мне нужно получить все свободные единицы за запрошенный период, запрос должен вернуть только те единицы, для которых не подтверждено резервирования (статус == 2) в запрошенный период (не существует)
Я работаю с Entity Framework, так что это должен быть запрос eSQL (другой вариант использует хранимую процедуру, но я хочу избежать этого). База данных SQL Express 2005.
Также запрос должен фильтровать единицы в зависимости от значений из табличных единиц, но это не проблема.
Я могу сделать это с помощью linq по результатам запроса (несколько операторов where).
редактировать:
Этот запрос работает:
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
Как бы выглядеть в сущности sql? Могу ли я сделать это с Linq?
имена сущностей такие же, как таблицы.