【问题标题】:NHibernate Query subquery group by join back to main entityNHibernate Query subquery group by join back to main entity
【发布时间】:2013-04-12 15:35:08
【问题描述】:

您好我正在尝试实现以下SQL

SELECT this_.*
 FROM WorkItems this_ 
 WHERE this_.UserId = (

 SELECT this_1_.y0_ as y0_
 FROM
 (
    SELECT top 1 this_0_.UserId as y0_, count(this_0_.UserId) as y1_ 
    FROM WorkItems this_0_ 
    WHERE this_0_.StateId = 1 and this_0_.Type like 'Data' 
    GROUP BY this_0_.UserId 
    ORDER BY y1_ desc
  ) this_1_

); 

到目前为止,我已经设法制作出相当接近的东西。我错过了我刚刚选择 userId 的部分。 这是到目前为止的查询

var subquery = QueryOver.Of<WorkItem>().Where(w => w.State == state)
                                .AndRestrictionOn(w => w.Type).IsLike(type, MatchMode.Exact)
                                .SelectList(list =>
                                            list.SelectGroup(w => w.UserId)
                                                .WithAlias(() => resultAlias.userId)
                                                .SelectCount(w => w.UserId)
                                                .WithAlias(() => resultAlias.count))
                                .OrderByAlias(() => resultAlias.count)
                                .Desc().Take(1);

        var query =
            CurrentSession.QueryOver<WorkItem>()
                          .WithSubquery
                          .WhereProperty(p => p.UserId)
                          .Eq(subquery);

【问题讨论】:

    标签: sql nhibernate fluent-nhibernate queryover


    【解决方案1】:

    试试这个:-

    var subquery = QueryOver.Of<WorkItem>().Where(w => w.State == state)
                    .AndRestrictionOn(w => w.Type).IsLike(type, MatchMode.Exact)
                    .SelectList(list => list.SelectGroup(w => w.UserId))
                        .OrderBy(Projections.Count<WorkItem>(x => x.UserId))
                    .Desc().Take(1);
    
    var query = CurrentSession.QueryOver<WorkItem>()
                  .WithSubquery
                  .WhereProperty(p => p.UserId)
                  .Eq(subquery);
    

    【讨论】:

    • 感谢 Gary,这正是我想要的!
    猜你喜欢
    • 2012-10-26
    • 2015-02-17
    • 1970-01-01
    • 2013-11-20
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    相关资源
    最近更新 更多