【发布时间】:2023-04-09 20:51:02
【问题描述】:
我想解决这个问题:
SELECT Max(Date)
FROM Table
GROUP BY SubId
(然后将其作为子查询传递给 mid-action,以便我可以获取表中项目的 Id)
SELECT Id
FROM Table
WHERE Date in
[[[ previous request ]]]
(然后通过其他表连接获取完整的表项)
SELECT *
FROM Table
LEFT JOIN...
WHERE Id in
[[[ previous request ]]]
我尝试过这种请求:
var subquery = QueryOver.Of<Table>(() => x)
.SelectList(list => list
.SelectMax(() => x.Date)
.SelectGroup(() => x.Sub.Id)
);
var filter = QueryOver.Of<Table>().WithSubquery.
WhereExists(subquery)
.Select(p => p.Id);
var result = Session.QueryOver<Table>().WithSubquery.WhereProperty(p => p.Id).In(filter).Left.JoinQueryOver(p => p.Sub).List();
但问题是我无法仅凭请求中的日期就获得第一个请求。 有没有比那种子查询更好的方法呢?在 NHibernate 中是否有可能在不选择它的情况下按属性分组?
谢谢!
【问题讨论】:
-
感谢您的提示。我会再试一次,但现在我找到了解决方案。
-
@Revv:这里可能的解决方案:stackoverflow.com/a/30915886/750216
标签: c# sql nhibernate fluent-nhibernate