ThinkPHP子查询

文章讲述了如何在ThinkPHP框架中利用Db类的buildSql方法来构建并执行复杂的SQL查询,包括别名设置、字段选择、JOIN操作、分组以及限制记录数。示例展示了如何从r_answer表开始,通过LEFTJOIN连接user和category表,然后进行分组和限制,最后生成嵌套查询的SQL语句。

使用buildSql()

$subQuery = Db::table('dbname')->buildSql();
$list = Db::table($subQuery . ' a')

原sql语句

SELECT * FROM ( SELECT count(*) count,ra.id,c.name FROM `r_answer` `ra` LEFT JOIN `user` `u` ON `u`.`id`=`ra`.`user_id` LEFT JOIN `category` `c` ON `c`.`id`=`ra`.`school_id` GROUP BY `u`.`teacher` LIMIT 1000000 ) a GROUP BY `user_id`

ThinkPHP查询

$subQuery = Db::table('r_answer')
            ->alias('ra')
            ->field("count(*) count,ra.id,c.name")
            ->join("user u","u.id=ra.user_id",'left')
            ->join("category c","c.id=ra.school_id",'left')
            ->limit(1000000)
            ->group('u.teacher')
            ->buildSql();
 $list = Db::table($subQuery . ' a')
            ->group('user_id')
            ->select();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值