分表后的查询

来源:互联网 发布:解压出现数据错误 编辑:程序博客网 时间:2024/04/29 19:16
public function getDouRecordList($sql,$p){$totals = 0;$listRows = 20;$record1Arr = $record2Arr= array();$recordNum1 = M('users_jd_log')->where($sql)->count();$recordNum2 = M('users_jd_log_1y')->where($sql)->count();$recordNum3 = M('users_jd_log_3m')->where($sql)->count();$totals = $recordNum1+$recordNum2+$recordNum3;if($totals){import("@.ORG.Page");$page = new Page($totals,$listRows);  //总的page数$curpage = $p ? $p: 1; //当前页面$curoffset= ($curpage-1)*$listRows; //页面偏移量$lastTotals = $curoffset; //偏移量之前的总条数//定位页面偏移量if($lastTotals <= $recordNum1){$offsetFlag = 1;$offset = $curoffset;}else if($lastTotals <=($recordNum1+$recordNum2)){$offsetFlag = 2;$offset = $curoffset-$recordNum1;}else if($lastTotals <=($recordNum1+$recordNum2+$recordNum3)){$offsetFlag = 3;$offset = $curoffset -$recordNum1-$recordNum2;}else{$offsetFlag = 3;$offset = $curoffset -$recordNum1-$recordNum2;}$recordTableArr = array('1'=>'users_jd_log','2'=>'users_jd_log_3m','3'=>'users_jd_log_1y');$curTable = $recordTableArr[$offsetFlag];$record1Arr = M($curTable)->where($sql)->limit("{$offset},{$listRows}")->select(); if(count($record1Arr)<$listRows){foreach($recordTableArr as $key=>$val){if($offsetFlag < $key) $nexTableArr[$key] = $val; } $listRows = $listRows-count($record1Arr);if($nexTableArr){foreach($nexTableArr as $k=>$v){$nextRecordTable = $v;$nextOffset = 0; //默认下张表的偏移量是0;$nextNumTotals = "recordNum".$key;$tmpArr = array();while($nextOffset < $$nextNumTotals){ //不断查询表信息得到数据$rArr = M($nextRecordTable)->where($sql)->limit("{$nextOffset},{$listRows}")->select();$nextOffset +=$listRows;if($rArr){foreach($rArr as $k=>$v) $tmpArr[] = $v;}if(count($tmpArr)==$listRows) break;}if($tmpArr){foreach($tmpArr as $k=>$v) $record1Arr[] = $v;$listRows -= count($tmpArr);}if($listRows==0) break;}}}return array('page'=>$page,'record'=>$record1Arr);}}

0 0
原创粉丝点击