thinkphp3.2 join复杂链表查询语句(表重命名/别名)
2017-07-25 15:32
357 查看
功能描述:
同一个数据库的两张数据表,实现两张表链表查询,并且返回指定的几个字段名(字段名跟两张表的字段名不一样),将取到的结果以json格式,返回给安卓前端调用
jy_order(订单表),数据结构如下:
jy_scan_record(扫描记录表),数据结构如下:
注意事项:
1、thinkphp 链表查询的时候(join等操作),数据表名必须填全名,自己测试过用简写的 别名 简化操作 ,结果报错。无奈只能用全名;
2、filed()取字段的值,赋值给自定义的字段名,以自定义的字段名保存数据到结果中。例如:
如果想取结果数组中item_name字段的值,只需要:
同一个数据库的两张数据表,实现两张表链表查询,并且返回指定的几个字段名(字段名跟两张表的字段名不一样),将取到的结果以json格式,返回给安卓前端调用
jy_order(订单表),数据结构如下:
jy_scan_record(扫描记录表),数据结构如下:
/** * 扫描记录 只读接口 * @param {string} $uid 用户uid * @return {json} $list 扫描记录json数组 */ public function scanRecord(){ $tmp = file_get_contents("php://input"); $arr = json_decode($tmp,true); $uid = $arr['uid']?$arr['uid']:I('uid'); $ScanRecord = M('ScanRecord'); /*分表查询 对比性能优先(如果数据量大,服务器性能能耗太大,所以改用链表查询,听说而已,还没亲身验证过...以后有时间补充验证下) */ // $list = $ScanRecord->where(array('uid'=>$uid))->field('item_id,order_id,location,created')->order('created desc')->limit(10)->select(); // $Order = M('Order'); // for($i=0;$i<sizeof($list);$i++){ // $list[$i]['item_name'] = $Order->where(array('id'=>$list[$i]['order_id']))->getField('name'); // } //链表查询 对比性能优先 $list = $ScanRecord ->join('jy_order on jy_scan_record.order_id = jy_order.id')->where(array('uid'=>$uid)) ->field(array('jy_order.name'=>'item_name','jy_scan_record.item_id'=>'item_id','jy_scan_record.order_id'=>'order_id','jy_order.name'=>'item_name','jy_scan_record.location'=>'location','jy_scan_record.created'=>'created'))->select(); if(!$list) $this->error('无扫描记录'); $this->success($list,"成功",1); }
注意事项:
1、thinkphp 链表查询的时候(join等操作),数据表名必须填全名,自己测试过用简写的 别名 简化操作 ,结果报错。无奈只能用全名;
2、filed()取字段的值,赋值给自定义的字段名,以自定义的字段名保存数据到结果中。例如:
'jy_order.name'=>'item_name' //取jy_order表的 name 字段,改字段名为 item_name,保存到结果数组中
如果想取结果数组中item_name字段的值,只需要:
echo $list[0]['item_name'];
相关文章推荐
- thinkphp3.2使用join联合查询
- 在 thinkphp3.2的 两个表里面有相同字段 进行链表查询
- [thinkphp3.2]多查询语句拼接(And、Or)
- 复杂查询语句的使用,Oracle
- sql语句复杂查询的思路
- sql 语句实现简单查询和复杂查询
- thinkphp3.2 分组统计连接查询
- SQL高级语句-JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
- thinkphp查询语句
- 左外连接查询语句(left outer join)
- Hive-2.HiveQL查询中JOIN语句
- MySQL查询语句之复杂查询__1
- thinkphp中多表查询中防止数据重复sql语句
- SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- 复杂的MySQL 时间查询语句解析
- 为什么有join关联查询,ThinkPHP还要增加关联模型(实例说明)
- ThinkPHP(3)SQL查询语句
- Oracle下复杂查询语句
- Oracle学习笔记20150817一些复杂查询语句分析