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