【问题标题】:how to find percentage and save it to mysql如何找到百分比并将其保存到mysql
【发布时间】:2011-07-25 06:21:48
【问题描述】:


$ar1=array("手机","商店","软件","硬件");
$arr2=arry("shop","Mobile","shop","software","shop")
我想将 arr2 的元素与 arr1 进行比较,即

$counts=数组(); foreach($arr2 作为 $val) { if(in_array($val, $arr1)) { array_push($counts,$val); // 这里将我的插入查询在 mysql 表中插入数据。 } } //foreach循环结束 $specific_fields = array_count_values($counts); /* 数组 ([商店] => 3 [软件] => 1 [移动] => 1) $total_fields=count($arr2); // 输出为 5 现在首先我想找到每个元素的百分比 即 $per1=$specific_fields['shop']/$total_fields; $per2=$per1*100; $percentage=number_format($per2,0); 当我找到百分比时,如何使用所有元素的百分比值更新下面的查询。 $query="update table_name set shop='$percentage_value',Mobile='$percentage_value'......."; }


是否有动态方式自动更新所有字段。

【问题讨论】:

  • 一般来说,将更改的派生值保存到关系数据库不是一个好习惯。保存传入的原始值并在需要时使用查询来计算派生值会更有效。这有两个优点——没有更新,只有插入;以及在许多不同类型的计算中使用原始数据的能力。少数值得保存更改派生值的情况之一是汇总表,它可以充当昂贵查询结果的一种缓存。

标签: php mysql


【解决方案1】:

【讨论】:

  • 你的意思是在查询中计算?如果是这样,请查看我的其他答案。
  • 我不想在查询中计算。首先我想计算每个元素的百分比,即shop, Mobile, software,然后相应地更新查询。
【解决方案2】:

使用 COUNT 函数。示例:update table_name set shop=(COUNT(*) FROM table_name WHERE column meets condition)/(COUNT(*) FROM table_name) * 100, Mobile = ... http://www.tizag.com/mysqlTutorial/mysqlcount.php

【讨论】:

    【解决方案3】:
    $specific_fields = array_map(function($val, $total_fields){
      return $val / count($total_fields)
    }, $specific_fields, [$arr2]);
    
    print_r($specific_fields);
    

    对于更新sql语句应该是这样的

    $str_temp = '';
    foreach ($specific_fields as $key => $f)
    {
      $str_temp .= "$key=$f"
    }
    
    $sql = "UPDATE ... SET $str_temp WHERE ID = <ID>"
    

    【讨论】:

      猜你喜欢
      • 2022-11-05
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 2020-11-22
      • 2021-08-25
      • 2014-06-29
      • 2021-09-02
      相关资源
      最近更新 更多