thinkPHP3.2 join 用法詳解

inner join  如果表中至少 有一個匹配,在則返回行,等同與 join 。
left    join  即使 有右表中沒有匹配 ,也從左表中返回所有的行。
right join  即使左表中沒有匹配,也從右表中返回所有的行。
full    join  只要其中一個表中匹配,就返回行。

 $lists = $this->orderModel
     ->alias('t')
     ->field('t.*,o.order_id as ccsid')
      ->join('left join __ORDER__ as o on t.order_id = o.third_order_id  and t.source = o.source')
      ->where($map)
      ->order("create_time DESC")
      ->limit($page->firstRow . ',' . $page->listRows)
      ->select();

Tp語法註釋:
$lists = $this->orderModel              // M('third_order');
    ->alias('t')                        // 別名
    ->field('t.*,o.order_id as ccsid')  // 要查的字段
    ->join('left join __ORDER__ as o on t.order_id = o.third_order_id  and t.source = o.source')
    //關聯表(左鏈接  order表 as o 別名  on關係 t.xx = o.xxx          and  t.xxx  =  o.xxx  )
    ->where($map)                       // 條件
    ->order("create_time DESC")         // 排序
    ->limit($page->firstRow . ',' . $page->listRows)  // 取幾條
    ->select();

解析的sql 語句爲:
            
     SELECT    t.*,o.order_id as ccsid 
     FROM    db_third_order t 
     left join   db_order as o 
     on  t.order_id = o.third_order_id and t.source = o.source 
     WHERE   t.status <> 0 
     ORDER BY  create_time DESC 
     LIMIT     0,20 

原生sql註釋 :
select 表名(別名).* , 表名(別名). 字段 as 別名
from 主表 空格 別名(t)
left join 從表 as 別名 (o)
on   t.xxx = o.xxx   and   t.xxx = o.xxx   <表關係>
where  條件  
order by  字段名 desc   倒敘
limit  0,20









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章