想要个这种效果的sql查询该怎么写啊



我用遍历的方法得到的上面的结果,如果用原生sql该怎么写,谢谢了

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

第一,不要在循环里调用查询操作,会产生N+1的问题,相当影响性能;

第二,命名最好是规范一些,$jiaoshi,$j,$jg一点都不见名思义;

第三,关于你提到的需求,一个模型一对多就出来了。

//一对多+解决N+1的问题
$status = ClassRoom::with("student")->where("查询条件")->get();
1个月前 评论
小李世界 1个月前
讨论数量: 8
小李世界

你用 ORM 写,然后打印 SQL 语句。

1个月前 评论
SELECT a.id, a.realname,a.addtime (SELECT group_concat( b.img ) FROM jg b WHERE b.jid = a.id) AS "img"  FROM j a WHERE a.id IN(1,2);

需要在遍历explode分割下,有大佬给优化下吗

1个月前 评论
Nymph (楼主) 1个月前
wanzi (作者) 1个月前
yaoxs 1个月前

为啥要写sql呢,一对多关系ORM with一下就出来了,而且你这数据类型好像有点问题,img下面再套img,直接数组就可以了吧?

1个月前 评论
chowjiawei 1个月前
//以下代码可以实现你的需求

//查询
表子::with(['img' =>function($q){
        $q->field('pid,img');
    }])->where([])->field('id,readname,addtime')->get();

+

//模型
public function img(){
    return $this->hasMany($this,'pid','id');
}

那么考考大家: 此时如果需要关联里面只查询5条记录 要如何实现呢? 哈哈哈 :see_no_evil:

1个月前 评论
飞飞鱼 1个月前

看这语法应该是TP框架吧

1个月前 评论

第一,不要在循环里调用查询操作,会产生N+1的问题,相当影响性能;

第二,命名最好是规范一些,$jiaoshi,$j,$jg一点都不见名思义;

第三,关于你提到的需求,一个模型一对多就出来了。

//一对多+解决N+1的问题
$status = ClassRoom::with("student")->where("查询条件")->get();
1个月前 评论
小李世界 1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!