Я пытаюсь выразить SQL-запрос, используя API критериев NHibernate, и у меня возникают трудности, потому что я мыслю ориентированным на базу данных, а NHibernate - объектно-ориентированным. .
SQL (отлично работает):
select outerT.id, outerT.col1, outerT.col2, outerT.col3
from tbl outerT
inner join
(select max(innerT.id)
from tbl innerT
group by innerT.col1) grpT
on outerT.id = grpT.id
По сути, это самосоединение таблицы с ее подмножеством. Полагаю, я мог бы попытаться превратить самосоединение в ограничение:
select outerT.id, outerT.col1, outerT.col2, outerT.col3
from tbl outerT
where outerT.id in (select max(innerT.id) from tbl innerT group by innerT.col1)
Но я тоже не уверен, как выразить это с помощью NHibernate; Я борюсь с ProjectionList DetachedCriteria и хочу выбрать только max (id)
при группировке по col1
.
Большое спасибо за ваши предложения!