多表联合

join() 多表联合查询

使用 join() 函数可以完成多表联合查询,参数:联合语句;

join() 语法

as 主表表1别名 left|right|inner join 表2 as 表2别名 on 表1.字段 = 表1.字段 left|right|inner join 表3 as 表3别名 on 表2.字段 = 表3.字段

查询示例

<?php
class indexController extends grace{
    public function index(){
        $db   = \db('students');
        //手动查询总数,比如:利用第一url参数记录总数
        if(empty($_GET['total'])){
            $_GET['total'] = $db->count();
        }else{
            echo '使用 url 参数...';
        }
        $this->students  =  $db
            ->join('as a left join '.sc('db','pre').'classes as b on a.st_classid = b.class_id')
            ->page(2, $_GET['total'])
            ->order('st_id desc')
            ->fetchAll('a.*, b.*');
        p($this->students);
    }
}

说明

join 函数起始于 select 字段 from 主表名称 , 从此处开始编写联合查询语句;

连接方式区别

inner join(内连接)、left join(左连接)、right join(右连接)  ,它们之间其实并没有太大区别,仅仅是查询出来的结果有所不同。

 1.inner join(内连接),在两张表进行连接查询时,只保留两张表中完全匹配的结果集。
 2.left join,在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。
 3.right join,在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。
 具体演示参考 https://www.cnblogs.com/lijingran/p/9001302.html