基于PHP中的两列SQL查询创建汇总表


Create Summary Table based on two column SQL query in PHP

我正在寻找一些帮助来构建一个通用的PHP函数,该函数将接受SQL查询的输出

根据类别ID从表A GROUP中选择DISTINCT类别ID、状态ID、计数(*)

样本结果:

categoryID状态ID计数(*)类别B暂停1类别A待定4类别C暂停3B类草案1

数据库中可以有任意数量的CategoryID和Statues。。。

并返回TABULAR表格式:

我想要的结果是这样的:

按类别列出的状态汇总表:---------------------------------------------------------|类别A|类别B|类别C|…|合计已完成|0|1|0|…|1.挂起|4|0|3|…|7.草稿|0|1|1|…|2.---------------------------------------------------------总计:|4|2|4|…|10

我想明白了!--我希望这对将来的其他人有所帮助。。这不是一个漂亮的代码,但它是有效的,而且它是非常遗传的,所以它可以根据需要使用。。它的名字:

$sql="将DISTINCT categoryID,statusID,COUNT(*)从条目GROUP BY categoryID中选择为Count1";$results=mysql_query($sql,$con);//现在我们有了状态和类别,让我们将计数放在正确的单元格中:echo displayTabularSum($myarray,"status","category",1);

现在我使用的功能:

函数displayTabularSum($myarray,$table1,$table2,$includeTotal){//首先将$table1中的所有数据获取到数组中$sql="SELECT*FROM$table1 WHERE 1";$results=mysql_query($sql);$statusCodes=getsqlresultintoarray($results);//第二:将$table2中的所有数据放入数组$sql="SELECT*FROM$table2 WHERE 1";$results=mysql_query($sql);$categoryCodes=getsqlresultintoarray($results);//现在,在列中创建具有适当值的结果表$statusTable=array();$out=";$first=true;$cT=array();对于($x=0;$x';对于($y=0;$y'.$categoryCodes[$y][1].'';}if($includeTotal)$out.='总计';$out.='';$first=false;}$out=";$out="$statusCodes[$x][1]。";$rT=0;对于($y=0;$y";$c1=searchForId($categoryCodes[y][0],$myarray,"categoryID");$c2=searchForId($statusCodes[$x][0],$myarray,"statusID");$count1=0;$same=($c1==$c2);如果($same){如果($c1==99999或$c2==99999){//什么都不做。。。这些是NULL}其他{$count1=$count1+$myarray[$c1]['count1'];}}$out。=$count1;$rT=$count1+$rT;$cT[$y]=$cT[%y]+$count1;//正在收集列合计$out=";}if($includeTotals)$out.=''$rT.'';//显示行合计$out=";}if($includeTotals){//在关闭表之前显示"总计"列。$cT1=0;$out=";$out.='总计:';对于($x=0;$x'.$cT[$x].'';$cT1=$cT1+$cT[$x];}$out.=''$cT1.'';$out=";}$out=";退货$out;}函数getresultsintoarray1($results){//用于将SQL QUery中的所有结果获取到数组中的函数。$num_rows=mysql_num_rows($results);$myarray=array();if($num_rows>0){while($row=mysql_fetch_assoc($results)){$myarray[]=$row;}}其他{echo"在数据库中找不到数据…";unset($myarray);$myarray=array();}return$myarray;}函数getsqlresultintoarray($get)//是{$num_rows=mysql_num_rows($get);$returnArray=array();$i=0;while($row1=mysql_fetch_array($get)){$returnArray[$i][0]=$row1[0];//这是ID$returnArray[$i][1]=$row1[1];//这是我的名字$i++;}return$returnArray;}函数searchForId($id,$array,$field){如果(count($array)>0){foreach($array为$key=>$val){if($val[$field]===$id){return$key;}}}返回99999;}

如果有人对如何改进有想法,我将不胜感激!