繁体   English   中英

PHP / MySQL特定列数

[英]PHP / MySQL Specific Column Count

我在论坛上四处搜寻,但是对于我来说,所有答案似乎都不起作用,我猜这是更多的用户错误。

我正在尝试做的是:

  1. 从MySQL检索数据集

  2. 计算总行数

  3. 在metSLA列中具体计算出其中有多少个值为“ Y”

  4. 在metSLA列中具体计算出其中有多少个值为“ N”

  5. 将每个metSLA值转换为百分比

** MySQL查询可确保正常运行,并将其存储在变量$ result中以供参考。

*

        //sla and total case count and percentages
        $sla_met_rows = 0;
        $sla_not_met_rows = 0;

        $total_cases = mysql_num_rows($result);

        while ($row = mysql_fetch_array($result)) 
        {
        if `metSLA` = "Y"
            {
            $sla_met_rows ++;
            } else if `metSLA` = "N"
                {
                $sla_not_met_num_rows ++;
                }
        }
        $met_percentage = 100 / $total_cases * $sla_met_rows;
        $not_met_percentage = 100 / $total_cases * $sla_not_met_num_rows;

您可以使用单个MySQL查询来获取百分比结果:

SELECT COUNT( CASE WHEN `metSLA` = "Y" THEN 1 ELSE NULL END ) AS `Yes`,
    COUNT( CASE WHEN `metSLA` = "N" THEN 1 ELSE NULL END ) AS `No`,
    COUNT(1) AS `total`
FROM `TableName`

在您的PHP中,它将被引用为:

$result = mysql_query( <<The query above is here>> );
$row = mysql_fetch_array( $result );
$met_precentage = $row['Yes'] * 100 / $row['total'];
$not_met_precentage = $row['No'] * 100 / $row['total'];

更改

    if `metSLA` = "Y"
        {
        $sla_met_rows ++;
        } else if `metSLA` = "N"
            {
            $sla_not_met_num_rows ++;
            }

至:

    if ($row['metSLA'] == "Y")
    {
      $sla_met_rows ++;
    }

    else if ($row['metSLA'] == "N")
    {
      $sla_not_met_num_rows ++;
    }

您所遇到的三个问题:

  1. 您缺少条件周围的括号,
  2. 您要分配( = )而不是比较( == ),并且
  3. 您正在运行shell命令,而不是从数据库行获取值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM