标签:查询 其他 uip work left join ups 混合 think sel
JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
附上项目中的left join用法的代码:
1 $data = M("groups g") 2 ->field(‘g.id,g.group_name,e.uid‘) 3 ->join(‘left join equipment e ON g.group_name = e.group_name‘) 4 ->where(array(‘g.user_id‘ => ‘1‘)) 5 ->select();
下面是手册中的例子:
join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。
join方法可以支持以上四种类型,例如:
1 $Model = M(‘Artist‘); 2 $Model 3 ->join(‘think_work ON think_artist.id = think_work.artist_id‘) 4 ->join(‘think_card ON think_artist.card_id = think_card.id‘) 5 ->select();
join方法支持多次调用,但指定的数据表必须是全称,但我们可以这样来定义:
1 $Model 2 ->join(‘__WORK__ ON __ARTIST__.id = __WORK__.artist_id‘) 3 ->join(‘__CARD__ ON __ARTIST__.card_id = __CARD__.id‘) 4 ->select();
__WORK__
和 __CARD__
在最终解析的时候会转换为 think_work
和 think_card
。
默认采用INNER JOIN 方式,如果需要用其他的JOIN方式,可以改成
1 $Model->join(‘RIGHT JOIN __WORK__ ON __ARTIST__.id = __WORK__.artist_id‘)->select();
或者使用:
1 $Model->join(‘__WORK__ ON __ARTIST__.id = __WORK__.artist_id‘,‘RIGHT‘)->select();
join方法的第二个参数支持的类型包括:INNER LEFT RIGHT FULL。
如果join方法的参数用数组的话,只能使用一次join方法,并且不能和字符串方式混合使用。 例如:
1 join(array(‘ __WORK__ ON __ARTIST__.id = __WORK__.artist_id‘,‘__CARD__ ON __ARTIST__.card_id = __CARD__.id‘))
使用数组方式的情况下,第二个参数无效。因此必须在字符串中显式定义join类型,例如:
1 join(array(‘ LEFT JOIN __WORK__ ON __ARTIST__.id = __WORK__.artist_id‘,‘RIGHT JOIN __CARD__ ON __ARTIST__.card_id = __CARD__.id‘))
标签:查询 其他 uip work left join ups 混合 think sel
原文地址:http://www.cnblogs.com/cuculus/p/7008690.html