У меня есть HQL-запрос, который возвращает проекции объекта, включая количество определенных дочерних коллекций.
select t.Id as TagId, t.Name as Name, count(elements(t.Documents)) as Count
from Tag t
group by t.Id, t.Name, t.User
having t.User.Id = :userId"
Это работает, за исключением того, что мне нужно поставить условие на счет. Я только хочу посчитать Документы, где Trashed = false для документа.
Кажется, у меня есть умственный блок, как это сделать. Я использую NHibernate 3.0. Я был бы одинаково счастлив с запросом ICriteria или Linq.
ОБНОВЛЕНИЕ : Вот полностью правильный запрос:
select t.Id as TagId, t.Name as Name, sum(case when d.Trashed = false then 1 else 0 end) as Count
from Tag t
left join t.Documents d
group by t.Id, t.Name, t.User
having t.User.Id = :userId and sum(case when d.Trashed = false then 1 else 0 end) > 0