YII2-数据库数据查询方法,关联查询with, joinWith区别和分页

一、ActiveRecord 活动记录

1.with关联查询

例如,查询评论

 $post = Post::find()->with(‘comments‘);

等价于以下结果集

 SELECT * FROM `post`;
 SELECT * FROM `comment` WHERE post_id IN (...)
 
 结合Pagination分页查询OK

2.joinWith关联查询,返回

 $post = Post::find()->joinWith(‘comments‘, true)

 等价于:

 SELECT * FROM post LEFT JOIN `comment` comments ON post.`id` = comments.`post_id`;
 SELECT * FROM `comment` WHERE post_id IN (...);
  
 joinWith 返回一个包含关联表的结果集, 可以使用 order by / 过滤条件 / group by 关联数据

  但joinWith 结合Pagination分页查询,只能返回1条记录,为何???
时间: 2024-06-23 16:45:07

YII2-数据库数据查询方法,关联查询with, joinWith区别和分页的相关文章

Mongoose如何实现统计查询、关联查询

[问题]Mongoose如何实现统计查询.关联查询 发布于 4 年前  作者 a272121742  13025 次浏览 最近业务上提出一个需求,要求能做统计,我们设计的文档集,统计可能跨越的文档会比较多,想问一下,mongoose能实现统计查询和关联查询吗? 例如student文档对象有subject文档对象,subject文档对象有score属,查询所有学员的成绩.我个人的思路就是一般的解决方案,先查询所有学员,再查询所有分数,然后遍历做累加统计 StudentDao.find().sele

高级查询,关联查询

高级查询 1.关联查询作用:可以跨越多表查询 --查询出员工的名字和他所在部门的的名字//错误select first_name,name from s_emp,s_dept;//错误的原因:产生笛卡尔积(在查询两张表的时候,一张表中的数据与另一张表中的数据一一匹配),产生了冗余数据. //古老的写法:select first_name,name from s_emp,s_dept where s_emp.deop_id = s_dept.id; //现在的写法:select e.first_n

Oracle 高级查询1 关联查询 分组查询

高级查询 1.关联查询作用:可以跨越多表查询 --查询出员工的名字和他所在部门的的名字 语法:select 列,列,列 from 表1 join 表2on 表1外键=表2主键 2.外联接 左外联[left outer join] 以关联的左边为准,即使右边没有与之匹配的记录,则左边的记录也要 出现在结果集中,右边全部以NULL值显示. 右外联[right outer join] 以关联的右边为准,即使左边没有与之匹配的记录,则右边的记录也要 出现在结果集中,左边全部以NULL值显示. 3分组查询

asp.net 不用控件 循环输出数据库数据的方法

不使用什么repeater gridview之类的控件,怎么才能输出数据库的数据到一个table ,我用response.write在后台,拼接 table 代码可以输出 但总是在页面的最上面 , 是不是要在aspx页面相应位置用<% %> 循环输出 但又提示找不到我后台填充的DATASET,因为听说公司做asp.net是不用控件的,想知道他们是怎么做输出数据库表格的,还请高手帮帮忙,谢谢了. 不明白来问我后台代码public string test = "";    pr

子查询与关联查询哪个效果高

子查询: select a.*,(select workflowname from workflowbase where id=workflowid) workflownamefrom  [[zping.com]]] awhere a.operator='402882ed1112669201112a8385892f33' 执行结果: (360 行受影响)表 'Worktable'.扫描计数 360,逻辑读取 142334 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理

【JAVAWEB学习笔记】21_多条件查询、attr和prop的区别和分页的实现

今天主要学习了数据库的多条件查询.attr和prop的区别和分页的实现 一.实现多条件查询 public List<Product> findProductListByCondition(Condition condition) throws SQLException { QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource()); //定义一个存储实际参数的容器 List<String> list =

Mybatis高级查询之关联查询

3 关联查询 做查询之前,先修改几个配置.mapper.xml是在mybatis-config.xml中指定,那么我们每增加一个mapper都要增加一个配置,很麻烦.为了简化配置.需要将mapper接口和mapper.xml放到同一个文件下,并且接口和xml文件命名一致.使用mybatis的自动扫描:.这样,当我们新增接口的时候,直接创建接口和对应xml文件就可以了: <mappers> <!--<mapper resource="com.test.mapper.dao/

子查询与关联查询区别

1.子查询1.1. MySQL从4.1版本开始支持子查询,使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作1.2.子查询虽然很灵活,但是执行效率并不高1.3.执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程2.连接查询(join)2.1.可以使用连接查询(JOIN)代替子查询,连接查询不需要建立临时表,因此其速度比子查询快总结:连接查询效率高于子查询!!!扩展:

页面查询某一个时间段的数据的方法或者查询多个条件的数据库的查询方法

1.只查询在某一个时间段的数据 $param = $this->request->post(); $b=array(); if(!empty($param['start_time']) && !empty($param['end_time'])){ $b['create_time']=array('between',strtotime($param['start_time']).','.strtotime($param['end_time']));} $StyleTypeMod