左关联关联子查询(分组汇总),怎么做? 返回
SqlSugar
老数据
2
1804
悬赏:5 飞吻
我要查询部门列表,同时每个部门当前员工数分别显示,但不是所有部门会有下属员工。
select d.*,e.cnt from HR_Department d inner join HR_Org o on d.Org_Id=o.OrgId and o.IsDelete=0 left join ( select Dept_Id,Count(0) AS cnt from HR_Employee where [Enabled]=1 Group by Dept_Id ) AS e on d.DeptId=e.Dept_Id where IsDelete=0
我尝试着也写了一下:
using (var db = DataConn.GetDbClient(connName)) { if (db != null) { var q1 = db.Queryable<HR_Department, HR_Org>((a, g) => new object[] { JoinType.Inner, a.Org_Id == g.OrgId && g.IsDelete==false }) .Where((a, g) => a.Enabled == true && a.IsDelete == false); //外部传入动态条件函数 if (whereFunc != null) { q1 = q1.Where(whereFunc); } //分组统计授权角色数 var q2 = db.Queryable<HR_Employee>().GroupBy(e => e.Dept_Id).Select(ra => new { Dept_Id = e.Dept_Id, EmpCount = "COUNT(0)" //不知如何写,直接写字符串没有用! //EmpCount= SqlFunc.AggregateCount(e.Dept_Id) } ).Select<CountModel>(); //CountModel实体类,包含列:Dept_Id、EmpCount //两表关联(不是所有部门有员工,下行代码会隐藏无员工的部门) var q = db.Queryable(q1, q2, (a, b) => a.DeptId == b.Dept_Id); /* //以下错误:应该是没有符合格式的函数定义,即不支持。 var q = db.Queryable(q1, q2, (a, b) => new object[] { JoinType.Left, a.DeptId== b.Dept_Id }); } */ //外部定义排序 if (!string.IsNullOrEmpty(order)) { q = q.OrderBy(order); } //var sql = q.ToSql(); return q.ToPageList(pageIndex, pageSize, ref count); } }最后要求分页显示。
用ToSql()测试,输出SQL代码中,没有"Count(0) AS EmpCount"。
请高手指教!谢谢!
热忱回答(2)
-
..A.. VIP0
2020/3/30实在不知道怎么写,就按照文档里面的,直接传sql:
vart12 = db.SqlQueryable<Student>("select * from student").ToPageList(1, 2);0 回复 -
谁 VIP0
2020/9/28直接子查询,字表只分组查数量
customName = SqlFunc.Subqueryable<>().GroupBy(A => A.Name).Where(s => a.Name == s.Name ).Count()
0 回复