Yii2 使用 Joins 查询

Posted sandea

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii2 使用 Joins 查询相关的知识,希望对你有一定的参考价值。

Join()

JOIN_TYPE = INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN 等等

语法

$query = new Query;
$query  ->select([‘SELECT COLUMNS‘])  
        ->from(‘TABLE_NAME_1‘)
        ->join( ‘JOIN_TYPE‘, 
                ‘TABLE_NAME_2‘,
                ‘TABLE_NAME_2.COLUMN =TABLE_NAME_1.COLUMN‘
            ); 
$command = $query->createCommand();
$data = $command->queryAll();

示例一

$query = new Query;
$query  ->select([
        ‘tbl_user.username AS name‘, 
        ‘tbl_category.categoryname as  Category‘,
        ‘tbl_document.documentname‘]
        )  
    ->from(‘tbl_user‘)
    ->join(‘LEFT OUTER JOIN‘, ‘tbl_category‘,
                ‘tbl_category.createdby =tbl_user.userid‘)      
    ->join(‘LEFT OUTER JOIN‘, ‘tbl_document‘, 
                ‘tbl_category.cid =tbl_document.did‘)
    ->LIMIT(5)  ; 
        
$command = $query->createCommand();
$data = $command->queryAll();   

输出语句

SELECT `tbl_user`.`username` AS `name`, `tbl_category`.`categoryname` AS `Category` 
FROM `tbl_user` LEFT OUTER JOIN `tbl_category` 
ON tbl_category.createdby =tbl_user.userid 
LEFT OUTER JOIN `tbl_document` 
ON tbl_category.cid =tbl_document.did 
LIMIT 5 

leftJoin()

示例一

$query = new Query;
$query  ->select([‘tbl_user.username AS name‘, ‘tbl_category.type as Category‘])  
        ->from(‘tbl_user‘)
        ->leftJoin(‘tbl_category‘, ‘tbl_category.createdby = tbl_user.userid‘)
        ->limit(2); 
$command = $query->createCommand();
$data = $command->queryAll();

输出语句

SELECT `tbl_user`.`username` AS `name`, `tbl_category`.`type` AS `Category`
    FROM `tbl_user` LEFT JOIN `tbl_category` 
    ON tbl_category.createdby = tbl_user.useridd 
    LIMIT 2  

以上是关于Yii2 使用 Joins 查询的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Mysql Joins 而不是嵌套子查询来实现相同的结果?

如何使用 JOINS 和嵌套 SELECT 优化此 SQL 查询?

如何使用 Joins 和 Group by 编写查询

如何在不破坏SQL逻辑的情况下将JOINS转换为子查询

是不是真的可以到处使用JOINS来代替SQL中的子查询

在 ClickHouse 中使用 JOINS 和检查 NULL 的 Tableau 查询失败