Thinkphp join 连接查询

 1 public function test ( )
 2         {
 3             $User = M(‘authlist‘);
 4             $rs = $User->join(‘wifi_shop  on wifi_authlist.shopid = wifi_shop.id‘)->field(‘
 5             wifi_authlist.id,
 6             wifi_authlist.shopid,
 7             wifi_authlist.routeid,
 8             wifi_authlist.mac,
 9             wifi_authlist.over_time,
10             wifi_shop.id,
11             wifi_shop.shopname,
12             wifi_shop.pid,
13             wifi_shop.trade,
14             wifi_shop.province,
15             wifi_shop.city,
16             wifi_shop.area,
17             count(wifi_authlist.mac) as times
18             ‘)->where(‘wifi_shop.pid = %s‘,3)->group(‘wifi_authlist.mac‘)->order(‘over_time‘)->limit($Page->firstRow.‘,‘.$Page->listRows)->select();
19             dump($rs);
20         }

我这里查询的是 wifi_shop 跟 wifi_authlist 表,连接条件是

wifi_authlist.shopid = wifi_shop.id

一般要注意的是数据表包含前缀, 所以再join里 要加上前缀

三个表连接再加一个join就行

 1 $rs = $User->join(‘wifi_shop  on wifi_authlist.shopid = wifi_shop.id‘)->join(‘wifi_phonelist on wifi_authlist.mac = wifi_phonelist.mac‘)->field(‘
 2             wifi_authlist.id,
 3             wifi_authlist.shopid,
 4             wifi_authlist.routeid,
 5             wifi_authlist.mac,
 6             wifi_authlist.over_time,
 7             wifi_authlist.agent,
 8             wifi_shop.id,
 9             wifi_shop.shopname,
10             wifi_shop.pid,
11             wifi_shop.trade,
12             wifi_shop.province,
13             wifi_shop.city,
14             wifi_shop.area,
15             wifi_phonelist.mac,
16             wifi_phonelist.phone,
17             count(wifi_authlist.mac) as times
18             ‘)->where(‘wifi_shop.pid = %s‘,$pid)->group(‘wifi_authlist.mac‘)->order(‘over_time‘)->limit($Page->firstRow.‘,‘.$Page->listRows)->select();
时间: 2024-10-15 03:32:53

Thinkphp join 连接查询的相关文章

SQL中的join连接查询

inner join(交集 ,自然连接, 简写成join) 是最普通的连接查询,相当于早期根据where条件连接的查询 outer join(并集或部分并集,左表 + 右表) left [outer] join(左表产生完全集,右表有则匹配,没有则为null) right [outer] join(右表产生完全集,左表有则匹配,没有则为null) full [outer] join(并集) cross join(笛卡尔积,左表 * 右表) 开发中基本不用

关于left join连接查询 两张表里有同名字段的问题

左连接查询在开发中很常用,但有个问题常常会遇到,两个表中有同名字段时,比如左右表都有一个id字段,会造成查询结果中左表的id值被右表的id值覆盖掉(大部分php框架都是这个效果),而且还不会报错,容易留下隐蔽的bug!解决办法很简单,给同名字段用AS起别名.例如:order表,farmer表都含有id字段, $sql ="SELECT *,i.`id` AS sid from hr_users_identity as i left join hr_student as s on i.`user_

SQL Join(连接查询)

1.连接查询分为: inner join(自然连接,自连接) Left join(左连接)/Left outer join(左外连接):效果一样 Right join(右连接)/Right outer join(右外连接):效果一样 Full join(全连接)/Full outer join (全外连接) 2.大致语法如下: select a.*,b.* from table_3 as b FULL join table_2 as a on a.id=b.Mtype --左连接 select

thinkphp左连接查询,原生查询

原生查询: $Model = new Model();$sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.','.$p->listRows;$voList = $Model->query($sql); 2.左查询 $model=M('picture

连接查询时on与where的区别

写在前面:在编写SQL的过程中,我经常使用LEFT JOIN关联多个小查询形成一个大查询,产生一张宽表.在进行这些查询中,给我感触最深的亮点是:1.left join中主表的选择,主表的选择很重要,否则就会漏掉一些记录或者ID:2.连接查询的ON条件和外层的WHERE条件的区分使用,如果对他们的作用以及区别有一个很清晰的认识,那么用混一条语句就可能产生很大的差别.因此,本文在学习了网友的博文的基础上进行如下总结和整理. 关键点:数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,

MySQL8:连接查询

连接查询 连接是关系型数据库模型的主要特点. 连接查询是关系型数据库中最主要的查询,主要包括内连接.外连接等通过联结运算符可以实现多个表查询. 在关系型数据库管理系统中,表建立时各种数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中,当查询数据时通过连接操作查询出存放在多个表中的不同实体信息,当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行连接查询. 本文将介绍多表之间的内连接查询.外连接查询. 创建测试数据 为了后面可以演示内连接.外连接中的左外连接和右外连接,

SQLServer连接查询之Cross Apply和Outer Apply的区别及用法

https://blog.csdn.net/wikey_zhang/article/details/77480118 先简单了解下cross apply的语法以及会产生什么样的结果集吧! 示例表: SELECT * FROM tableA CROSS APPLY tableB 两张表直接连接,不需要任何的关联条件,产生的结果就是这两张表的笛卡儿集,在这里和上一篇帖子讲的cross join交叉连接的结果集是一样的 相当于:select * from tableA,tableB 与之对应的还有Ou

数据库(学习整理)----7--Oracle多表查询,三种join连接

聚合函数:(都会忽略null数据) 常用的有5种:将字段中所有的数据聚合在一条中 1.sum(字段名) :求总和 2.avg(字段名) :求平均值 3.max(字段名) :求最大值 4.min(字段名) :求最小值 5.count(字段名.*) :统计行数 ----2.按部门编号,查询平均薪水 ,并且平均薪水<1300的不显示,结果按降序排序 select empno,avg(sal) as avgsal from scott.emp group by empno having avg(sal)

SQL表连接查询(inner join、full join、left join、right join)

前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和成绩: select s.name,m.mark from student s,mark m where s.id=m.studentid 上面就是我们最常见的inner join,即内连接,把符合student.id=mark.studentid 条件的元组才选出来,也可以写成: select s.name,m.mark from stude