隊伍分組統計 (雙重迴圈遍歷出來)或 (sql語句查出來
例1
以上查詢語句
1、所有的隊伍人員資訊: select distinct teamname,realname,users.usertype,clothsize,gender,mobile,address,zipcode,team_users.teamid from users,team_users,team where users.userid = team_users.userid and team.teamid = team_users.teamid and team.matchid = 3ORDER BY team.teamid
2、分組後的隊伍人員資訊: select distinct teamname,realname,users.usertype,clothsize,gender,mobile,address,zipcode,team_users.teamid from users,team_users,team where users.userid = team_users.userid and team.teamid = team_users.teamid and team.matchid = 3GROUP BY
將2分組後的結果當為外迴圈 比如分組後的隊伍teamid為 67,70, 71, 79
將1所有隊伍人員資訊做為內迴圈,用67 70 71分別遍歷完整個 1 的結果
control層
//得到所有本賽事的報名分組資料,迴圈遍歷進行重構陣列資料 //本賽事隊伍分組後的資訊group by team.teamid $teamInfo = $this->Search_model->getteaminfo($matchid); //本賽事隊伍資訊,沒有group by team.teamid的 $arrAllTeam = $this->Search_model->getClothSize($matchid); $NewarrTeam = $this->Search_model->constructArrteam($teamInfo,$arrAllTeam);
model層
//重構本賽事所有team資訊資料 public function constructArrteam($teamInfo,$OldArr){ $intrecord = 0; $teamname = ""; $headname = ""; $telphone = ""; $teamnumber = 0; $mname = ""; $fnmae = ""; $nucount = 0;//統計每個隊伍人數 $ResturnArr = array(); //var_dump($teamInfo); //var_dump($teamInfo['34']['teamid']); //die(); //var_dump($teamInfo); //die(); for($i=0; $i<count($teamInfo); $i++){ if($OldArr){ foreach($OldArr as $value){ if($teamInfo[$i]['teamid'] == $value['teamid']){ if($value['gender']=='1'){ $mname = $mname.','.$value['realname']; }else{ $fnmae = $fnmae.','.$value['realname']; } if($value['usertype']=="1"){$headname=$value['realname'];$telphone = $value['mobile'];} $nucount = $nucount + 1; //$mnam = substr($mnam,1); //$fnmae = substr($fnmae,1); $ResturnArr[$intrecord]['teamname'] = $value['teamname']; $ResturnArr[$intrecord]['headname'] = $headname; $ResturnArr[$intrecord]['telphone'] = $telphone; $ResturnArr[$intrecord]['teamnumber'] = $teamnumber; $ResturnArr[$intrecord]['mname'] = substr($mname,1); //去掉第一個逗號拼接字元 $ResturnArr[$intrecord]['fnmae'] = substr($fnmae,1); $ResturnArr[$intrecord]['nucount'] = $nucount; }else{ } } $mname = ""; //重置用於下次每個隊伍統計 $fnmae = ""; $nucount = 0; $intrecord = $intrecord + 1; }else{ return FALSE; } } return $ResturnArr; }
結果
例2
對於隊數固定,場數為 隊數-1時
寫入excel時,可以先單獨進行隊數寫入。再用陣列把隊數-1的值給新陣列中。 再單獨插入場數
//先放隊數
if($GroupTypeSummary){
$intrecord = 2;
for($i=0; $i<count($GroupTypeSummary); $i++){
$intrecord= $intrecord+1;
if($i<count($GroupName)){
$objPHPExcel->getActiveSheet()->setCellValue('A'.$intrecord, $GroupName[$i]['groupname']);
}
$nu = 0;
for($j = 0;$j < count($EventType);$j++){
$objPHPExcel->getActiveSheet()->setCellValue($arrCellLetter[$nu].$intrecord, $GroupTypeSummary[$i][$j]);
$nu = $nu + 2;
}
}
}else{
}
//再放場數,場數為隊數-1,重新迴圈隊數將場數值得到
$fieldnumber = array();
$num = 0; //隊數給於變數num
if($GroupTypeSummary){
$intrecord = 2;
for($i=0; $i<count($GroupTypeSummary); $i++){
$intrecord= $intrecord+1;
$nu = 1;
for($j = 0;$j < count($EventType);$j++){
$num = $GroupTypeSummary[$i][$j];
if($num==0){
$num = 1;
}
$fieldnumber[$i][$j] = $num-1;
$objPHPExcel->getActiveSheet()->setCellValue($arrCellLetter[$nu].$intrecord, $fieldnumber[$i][$j]);
$nu = $nu + 2;
}
}
}else{
}
===========================================================
sql語句查出來
SELECT m.eventtypeid, m.eventgroupid,Count(*) as Num, typename, groupname
FROM (SELECT tf.teamid, e.eventid, e.eventtypeid, e.eventgroupid, t.status
FROM teamform tf, events e, team t WHERE tf.matchid = 3 AND tf.eventid = e.eventid AND tf.teamid = t.teamid) AS m
left JOIN eventtype on eventtype.eventtypeid = m.eventtypeid
left join eventgroups on m.eventgroupid = eventgroups.eventgroupid
GROUP BY m.eventtypeid,m.eventgroupid ORDER BY m.eventgroupid, m.eventtypeid