嗨,我必须把下面的sql翻译成QueryOver,可以吗?我的实际查询可能会更复杂。但我一直停留在这个阶段。
SELECT InnerQuery.USERID,
InnerQuery.TRAFFICZONEID,
InnerQuery.StatusCategory,
COUNT(*) AS LineCount
FROM (
SELECT MissionID,
UserId,
TRAFFICZONEID,
CASE
WHEN status BETWEEN 1
AND 5
THEN 1
WHEN status BETWEEN 6
AND 8
THEN 2
WHEN status BETWEEN 9
AND 17
THEN 3
ELSE 0
END AS [StatusCategory]
FROM mission
) AS InnerQuery
LEFT OUTER JOIN trafficzone t ON InnerQuery.TRAFFICZONEID = t.Trafficzoneid
GROUP BY InnerQuery.USERID,
InnerQuery.TRAFFICZONEID,
InnerQuery.StatusCategory在QueryOver中做这样的事情是可能的吗?否则,使用NHibernate做这件事的最佳方式是什么?
谢谢,
DineshNS
发布于 2011-09-12 22:38:48
我建议您使用HQL来完成此任务。
在NHibernate支持的所有查询方法中,它是最适合自由格式查询的方法。
它唯一不直接支持的是对子查询的外连接。对于子查询中没有匹配元素的项,可以使用隐式连接对子查询(from A, (subquery) B where A.X = B.X)和UNION进行伪装。
发布于 2011-09-12 17:52:40
对于复杂的查询,您可以在数据库中创建视图并在NHibernate中使用该视图。
https://stackoverflow.com/questions/7383386
复制相似问题