Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一列仅显示一个字段,其余字段根据所有适用记录计算_Php_Mysql - Fatal编程技术网

Php 一列仅显示一个字段,其余字段根据所有适用记录计算

Php 一列仅显示一个字段,其余字段根据所有适用记录计算,php,mysql,Php,Mysql,恐怕又回来了 我有一个SQL查询-填充一个表 echo SQLResultTable("SELECT SalesExec, COUNT(SalesExec)AS 'Total<br/> Checks', $AverageScore, `SUM(Autofails) AS 'Total <br/>AutoFails', $AverageAutofails FROM Data_Table WHERE BranchManager = '$BM'");` 在数据库中,我目前有3

恐怕又回来了

我有一个SQL查询-填充一个表

echo SQLResultTable("SELECT SalesExec, COUNT(SalesExec)AS 'Total<br/> Checks', $AverageScore, `SUM(Autofails) AS 'Total <br/>AutoFails', $AverageAutofails FROM Data_Table WHERE BranchManager = '$BM'");`
在数据库中,我目前有3条记录。2个代表销售主管A,1个代表销售主管2

上面的输出形式是在表中生成一行。只有销售主管的名字。然而,所有其他字段都在相加/求平均值等,所有3个记录值

如何使该表生成所需的正确2行,并将平均值/计数/总和等应用于与该销售主管相关的记录

为了让表正常工作,我从另一个网站上截取了这个函数,这个功能似乎可以在其他网站上正常工作

function SQLResultTable($Query)
{
    $host = "localhost";
$user = "root";
$pass = "";
$db = "Quality_Monitoring";
    $link = mysql_connect($host, $user, $pass) or die('Could not connect: ' . mysql_error());      //build MySQL Link
    mysql_select_db($db) or die('Could not select database');        //select database
    $Table = "";  //initialize table variable

    $Table.= "<table border='1' style=\"border-collapse: collapse; text-align: center; font-size: small; cellspacing: 5px; \">"; //Open HTML Table

    $Result = mysql_query($Query); //Execute the query
    if(mysql_error())
    {
        $Table.= "<tr><td>MySQL ERROR: " . mysql_error() . "</td></tr>";
    }
    else
    {
        //Header Row with Field Names
        $NumFields = mysql_num_fields($Result);
        $Table.= "<tr style=\"background-color: #000066; text-align: center; color: #FFFFFF;\">";
        for ($i=0; $i < $NumFields; $i++)
        {     
            $Table.= "<th>" . mysql_field_name($Result, $i) . "</th>"; 
        }
        $Table.= "</tr>";

        //Loop thru results
        $RowCt = 0; //Row Counter
        while($Row = mysql_fetch_assoc($Result))
        {
            //Alternate colors for rows
            if($RowCt++ % 2 == 0) $Style = "background-color: #00CCCC;";
            else $Style = "background-color: #CCCCCC;";

            $Table.= "<tr style=\"$Style\">";
            //Loop thru each field
            foreach($Row as $field => $value)
            {
                $Table.= "<td>$value</td>";
            }
            $Table.= "</tr>";
        }
       // $Table.= "<tr style=\"background-color: #000066; color: #FFFFFF;\"><td colspan='$NumFields'>Query Returned " . mysql_num_rows($Result) . " records</td></tr>";
    }
    $Table.= "</table>";

    return $Table;

}

?>

感谢您的帮助,干杯

SQL语句使用聚合函数COUNT、SUM,但没有GROUP BY。按SalesExec分组。因为MySQL对GROUPBY子句的存在和内容很宽容,所以它将返回一行,可能是第一个SalesExec,但会对所有SalesExec计算聚合,这不是一个有意义的结果

echo SQLResultTable("
  SELECT SalesExec, COUNT(SalesExec)AS 'Total<br/> Checks', $AverageScore, `SUM(Autofails) AS 'Total <br/>AutoFails', $AverageAutofails 
  FROM Data_Table 
  WHERE BranchManager = '$BM' 
  GROUP BY SalesExec
");`

SQL语句使用聚合函数COUNT、SUM,但没有GROUP BY。按SalesExec分组。因为MySQL对GROUPBY子句的存在和内容很宽容,所以它将返回一行,可能是第一个SalesExec,但会对所有SalesExec计算聚合,这不是一个有意义的结果

echo SQLResultTable("
  SELECT SalesExec, COUNT(SalesExec)AS 'Total<br/> Checks', $AverageScore, `SUM(Autofails) AS 'Total <br/>AutoFails', $AverageAutofails 
  FROM Data_Table 
  WHERE BranchManager = '$BM' 
  GROUP BY SalesExec
");`

您应该停止使用mysql_*函数。他们被弃用了。请改用从PHP5.1起支持的或从PHP4.1起支持的。如果您不确定要使用哪一个,则应停止使用mysql_*函数。他们被弃用了。请改用从PHP5.1起支持的或从PHP4.1起支持的。如果你不确定该用哪一个,那太好了。谢谢你,你是怎么描述的。非常感谢。太好了。谢谢你,你是怎么描述的。非常感谢。