1. 程式人生 > >隊伍分組統計 (雙重迴圈遍歷出來)或 (sql語句查出來

隊伍分組統計 (雙重迴圈遍歷出來)或 (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

team.teamid

將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