首页 > 编程语言 > 详细

Thinkphp做表关联查询:A表所有数据,并查询关联的B表的数量并累加A表字段做排序的案例

时间:2021-01-07 19:02:03      阅读:118      评论:0      收藏:0      [点我收藏+]

TP的查询语句:1对n关联表查询统计时,需查询A表中所有数据(视频列表),并查询B表中关联A表数据的统计数量(点赞数量),在加上A表中的虚拟统计数量(虚拟点赞数),作为最终统计数量(总点赞数),并做排序的写法:

(即:视频有虚拟点赞数和真实点赞数,真实点赞数记录在B表,通过A表主键ID做关联。查询结果的点赞数=虚拟点赞数+正式点赞数)

1、先将B表的数据,按A表的关联字段做分组查询并统计数量,field中填写关联字段和统计数量结果字段,其他字段自己看情况增加

$subsql = UserVideoRelation::alias(‘a‘)

    ->field(‘a.video_id,count(a.id) count1‘)

    ->group(‘a.video_id‘)

    ->buildSql();

 

 

2、查询A表记录,并关联上面步骤的结果,注意关联类型必须为:LEFT

$list = UserVideo::alias(‘v‘)

    ->field(‘v.*,IFNULL(a.count1,0) + IFNULL(v.sys_zan,0) as count)

    ->join([$subsql => ‘a‘], ‘v.id=a.video_id‘, ‘left‘)

    ->order(‘count desc‘)->limit(10)->select()->toArray();

 

Thinkphp做表关联查询:A表所有数据,并查询关联的B表的数量并累加A表字段做排序的案例

原文:https://www.cnblogs.com/yshhy/p/14247015.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!