果糖网

联表查询分组 返回

SqlSugar
9 180

目前很是这样的

例如 我现在有一张数据表A 里面有很多组重复的数据
还有一张表B A需要关联到B查询数据 按照A和B中字段分组查询最后得到一个结果集 可以说我最后把结果集有变成了B其实A中的数据可以集成到B中

现在是在orderby 的过程中出现问题了


select sum(A.count) as number ,A.id,B.name from A left join B on A.id=B.id  where A.date between xxx and xxx and B.xx=xxx group by A.id,B.name order by number


请问像上面的sql语句对应的sqlsugar应该怎么写

 Db.Queryable<A, B>((s1, s2) => new object[] { JoinType.Left, A.sid == B.sid})

                .Where(expression)

                .GroupBy((s1, s2) => new { 

                    s1.id,

                    s2.name})

 .Select<B>((s1, s2) => new B()

                {

id=s1.id,

                    song_id = s1.song_id,

number=SqlFunc.AggregateSum(s1.number)

}).orderby(我这个地方应该怎么写 请求各位大佬支招 谢谢了)

 .ToPageListAsync(page, limit, total);


热忱回答9

  • orderby写select前面

    0 回复
  •  if exists (select * from sysobjects where id = object_id(N'A'))

     drop table A

    create table A

    (

    id int identity(1,1) primary key,

    sid int not null,

    number int not null

    )

    go


     if exists (select * from sysobjects where id = object_id(N'A'))

     drop table B

     create table B

    (

    sid int identity(1,1) primary key,

    name nvarchar(200)

    )

    go


    insert into A values(1,10)

    insert into A values(2,20)

    insert into A values(3,30)

    insert into A values(1,40)

    insert into A values(2,50)

    insert into A values(3,60)



    insert into B values('张三')

    insert into B values('李四')

    insert into B values('王五')


    select A.sid,B.name,sum(A.number) as total from A left join B on A.sid=B.sid group by A.sid,B.name order by total desc


    请问我用sqlsugar 如何实现以上sql 语句写出的代码
    下面是我自己写的 
    var data = await Db.Queryable<A, B>((s1, s2) => new object[] { JoinType.Left, s1.sid == s2.sid }).GroupBy((s1, s2)=>{s1.sid,s2.name}).select((s1,s2)=>new {id=s1.sid,name=s2.name,number=SqlFunc.AggregateSum(s1.number) }).ToPageListAsync(1, 10, total);

    麻烦 大佬给看下



    0 回复
  • var data = await Db.Queryable<A, B>((s1, s2) => new object[] { JoinType.Left, s1.sid == s2.sid }).GroupBy((s1, s2)=>{s1.sid,s2.name}).select((s1,s2)=>new {id=s1.sid,name=s2.name,number=SqlFunc.AggregateSum(s1.number) }).MergeTable().Orderby(it=>it.number).ToPageListAsync(1, 10, total);

    0 回复
  • var data = dbContext.Db.Queryable<A, B>((s1, s2) => new object[] { JoinType.Left, s1.sid == s2.sid }).GroupBy((s1, s2) => new { s1.sid, s2.name }).Select((s1, s2) => new { sid = s1.sid, name = s2.name, number = SqlFunc.AggregateSum(s1.number) }).MergeTable().OrderBy(it => it.number).ToPageList(1, 5);


                 data = await dbContext.Db.Queryable<A, B>((s1, s2) => new object[] { JoinType.Left, s1.sid == s2.sid }).GroupBy((s1, s2) => new { s1.sid, s2.name }).Select((s1, s2) => new { sid = s1.sid, name = s2.name, number = SqlFunc.AggregateSum(s1.number) }).MergeTable().OrderBy(it => it.number).ToPageListAsync(1, 5,total);


    您好 如果我使用同步的就不会有问题
    使用 ToPageListAsync 该方法直接不返回数据也无响应 是不是MergeTable 不支持ToPageListAsync

    0 回复
  • @仲夏夜之梦:看下是不是最新版本,不是更新

    0 回复
  • 好的 多谢 已更新到最新版本 这个问题已解决 怎么给飞吻给你  我记得之前有采纳的选项的 现在更新之后就没有了

    0 回复
  • select a.id,a.number,b.name from(select id, SUM(number) as sing_number from  dbo.xxxx  where date between @startdate and @enddate group by id) as a left join xxxx b on a.id=b.id order by number desc
    大佬您好 请问下 像这种先把表里的数据给分组 然后再联查的这种语句 使用sqlsugar应该怎么写 

    0 回复
  • 我看了下你们的例子 没有介绍这种方式的 我只能使用sql写了  但是又脱离框架了 后期不太好维护

    0 回复
  • 子查询联表子查询

    0 回复

学习文档