您好我必须将folowing 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中可以做那种uery吗?或者用NHibernate做最好的方法是什么?
谢谢,
DineshNS
答案 0 :(得分:0)
我建议您使用HQL。
从NHibernate支持的所有查询方法来看,它最适合自由格式查询。
它唯一不直接支持的是子查询的外连接。对于子查询中没有匹配元素的项,您可以使用子查询(from A, (subquery) B where A.X = B.X
)和UNION
的隐式连接伪造它。
答案 1 :(得分:-1)
对于复杂查询,您可以在数据库中创建一个视图,并使用NHibernate中的视图。