Комплекс QueryOver - PullRequest
       3

Комплекс QueryOver

2 голосов
/ 12 сентября 2011

Привет, я должен перевести следующий 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

Ответы [ 2 ]

0 голосов
/ 12 сентября 2011

Я предлагаю вам использовать HQL для этого.

Из всех методов запросов, поддерживаемых NHibernate, он лучше всего подходит для запросов произвольной формы.

Единственное, что НЕ поддерживает напрямую - это внешнее соединение с подзапросом. Вы можете подделать это, используя неявное соединение с подзапросом (from A, (subquery) B where A.X = B.X) и UNION для элементов, которые не имеют соответствующих элементов в подзапросе.

0 голосов
/ 12 сентября 2011

Для сложного запроса вы можете создать представление в базе данных и использовать его из NHibernate.

...