JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。
INNER JOIN: 如果表中有至少一个匹配,则返回行,等同于 JOIN
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
join方法可以支持以上四种类型,例如:
$Model = M('Artist');
$Model
->join('think_work ON think_artist.id = think_work.artist_id')
->join('think_card ON think_artist.card_id = think_card.id')
->select();
join方法支持多次调用,但指定的数据表必须是全称,但我们可以这样来定义:
例子:
$res =M('orders o')
->join('left join mgj_order_detail od ON o.id=od.oid')
->join('left join mgj_address a ON o.aid=a.id')
->field('o.status,od.gid,od.pic,od.comment,od.size,od.color,od.price,od.gname,od.gtotal,od.gnum,o.num_id,o.total,o.addtime,o.num,a.address,a.det_detail,a.name,a.tel,a.code')->where("o.id = $oid")->select()
;
默认采用INNER JOIN 方式,如果需要用其他的JOIN方式,可以改成
$Model->join('RIGHT JOIN __WORK__ ON __ARTIST__.id = __WORK__.artist_id')->select()
;
或者使用:
$Model->join('__WORK__ ON __ARTIST__.id = __WORK__.artist_id','RIGHT')->select()
;