多表连接分页问题

项目中有个业务需要多张表的一个连接,还需要根据{size}和{offset}进行分页,这个时候,问题来了,表连接如果是一对一关系,正常在sql最后分页,什么事都没有,可是,一旦有多对多关系和一对多关系,这种分页明显用不了了!为什么???

我们可以分析一下:假如,t_student有10条数据,t_course表有多条,一个同学可以选择多个课程,一个课程可以属于多个学生,典型多对多,因此需要一张关系表t_relation,假如在t_student表中的1条数据对应关系表的5条数据,那么,我们如果按照t_course left join t_relation .... left join t_relation,那么查询出来的是50条数据,分页!而单表t_student只有10条,如果我需要t_student中的前两条,按照上述分页是查出10条,那么,分页结果是什么???明显不符合要求,因此解决此办法除了存储过程的方法,用传统表连接来解决则只能先按分页查询t_student表然后让查询出来的表作为虚表再做表连接,后面没有分页来处理,比如:

select ...

from (select ... from t_student limit 0,2) dual1 

left join t_relation on t_relation.sid=t_student.id

left join t_course on t_course.id=t_relation.cid

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值