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);
}
}
分表后的查询
最新推荐文章于 2024-07-19 03:45:34 发布