thinkphp中如何是实现多表查询

多表查询经常使用到,但如何在thinkphp中实现多表查询呢,其实有三种方法。


1

2

3

4

5

6

7

8

9

10

11

12

// 1、原生查询示例:

$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、join()方法示例:

$user new Model(‘user‘);

$list $user->join(‘RIGHT JOIN user_profile ON user_stats.id = user_profile.typeid‘ );

// 3、table()方法示例:

$list $user->table(‘user1 a, user2 b‘)->where(‘a.id = b.id‘)

->field(‘name,sex‘)->order(‘id desc‘ )->select();

时间: 2024-10-10 22:54:24

thinkphp中如何是实现多表查询的相关文章

springboot中使用JOIN实现关联表查询

* 首先要确保你的表和想要关联的表有外键连接 repository中添加接口JpaSpecificationExecutor<?>,就可以使用springboot jpa 提供的API了. @Repository public interface MyEntityRepository extends JpaRepository<MyEntity, Integer>, JpaSpecificationExecutor<MyEntity> { //... } 在查询方法中调

MySQL多表查询的18种方法

 一使用SELECT子句进行多表查询 SELECT 字段名 FROM 表1,表2 - WHERE 表1.字段 = 表2.字段 AND 其它查询条件 SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id 注:在上面的的代码中,以两张表的id字段信息相同作为条件建立两表关联,但在实际开发中不应该这样使用,最好用主

MySQL多表查询 三表查询 连接查询的套路

多表查询 * 当我们的一条记录 分散不同的表中时,就需要进行多表查询 例如 一对一 一对多 多对多 1.笛卡尔积查询 意思是将两个表中的所有数据 全部关联在一起   例如 a表 有2条 b表有3条   一共6条   会产生大量的错误数据 需要用添加来过滤select *from 表1,表2,....... where 过滤条件?连接查询内连接查询 inner jon   select *from 表1 join 表2 on 关系过滤条件   两边的数据必须完全匹配成功才显示     select

多表查询总结

多表查询 一.创建数据库 from django.db import models # Create your models here. """ 你在写orm语句的时候 跟你写sql语句一样 不要想着一次性写完 写一点查一点看一点 """ class Book(models.Model): """ 1. 一本书对应一个出版社,出版社与书,一对多关系, 2. 一本书可以多个作者,一个作者可出多本说 作者与书 多多的关系

THINKPHP 中关联查询(多表查询)

THINKPHP 中关联查询(多表查询)可以使用 table() 方法或和join方法,请看示例: 1.Table方法:定义要操作的数据表名称,可以动态改变当前操作的数据表名称,需要写数据表的全名,包含前缀,可以使用别名,例如: $Model->Table('think_user user') ->where('status>1') ->select(); $Model->table('think_blog blog,think_type type')->where('

ThinkPHP 多表查询-如果字段A相同,则把字段B相加

在一个项目中,需要查询表tr_product中的user_id字段,如果user_id相同,则把其对应的money字段相加,数据库截图如下: 实现代码: $Model = D('Model'); $res =$Model->query("SELECT user_id,sum(money) from tr_order GROUP BY user_id"); 结果: array (size=2) 0 => array (size=2) 'user_id' => strin

thinkphp中查询数据库具体的使用方法

thinkphp中数据操作方法的使用: 一.where()条件 $model->where(条件值);    //条件值就是sql语句where后边的结果值 $goods->where('goods_price>1000 and goods_name like "诺%" ');    //sql语句where后边的信息都可以作为where方法的参数 $info=$goods->select(); 二.limit()限制条件 $model->limit(数字

thinkphp中的exp查询

今天遇到一个问题,就是在vendor表中查询出vendor_id = vendor_f_id的数据,其实使用原生的sql语句是非常简单的: select * from vendor where vendor_id = vendor_f_id 但是,在thinkphp中为了代码的简洁以及通用性,不考虑使用原生的方式进行sql的查询,而是采用查询map的方式进行查询 $condition[ 'vendor_f_id' ] = 'vendor_id'; 但是,thinkphp在处理上述条件的时候,将其

多表查询,子查询,及查询语句中语句执行的先后顺序和特点

对多张表进行查询操作 查询方式1: 笛卡尔积查询 select * from 表1,表2; 结果:让表1中的每一条记录和表2中每一条记录一次组合 表1 n条记录 表2 m条记录 最终查询结果:n * m 条 注意: 1.观察笛卡尔积查询的最终结果,很多数据没有实际作用 2.查询结果太多,对内存压力大 笛卡尔积查询优化(内连接) 加上条件 隐式内连接 select * from 表1,表2 where 表1.字段 = 表2.字段; 显示内连接语法 select * from 表1 inner jo