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