【问题标题】:count same items in comma separated string in sql在sql中以逗号分隔的字符串计算相同的项目
【发布时间】:2017-09-15 10:58:17
【问题描述】:

您好,我在数据库中有逗号分隔的 ID。 我想单独计算/百分比(GROUP BY)并想制作饼图。怎么办?

喜欢,附上示例数据库图片。

Id         COUNT
1-----------6 OR some%
15----------3 OR some%
17----------2 OR some%
2-----------2 OR some%
6-----------2 OR some%
12----------1 OR some%

【问题讨论】:

  • 你试过什么?提供代码示例。
  • 修复您的数据模型,使其具有合理的结构。将数字存储在字符串中是错误的方法。存储 id 更糟糕,因为您无法定义外键关系。
  • 我不知道如何尝试。需要sql帮助
  • 你只能通过php而不是mysql
  • @VijaySharma 把它们全部搞定,然后爆炸,然后数数?

标签: php mysql sql codeigniter


【解决方案1】:

试试这个

假设您在$result 中获得了数据 那么

$result['count']=count(explode(",",$result['column_name']));

【讨论】:

    【解决方案2】:

    除了您的数据库结构一团糟之外,您还可以尝试以下方法:

    $arrData = [
        "1","15,17","1","1","15,17","1","1","1,2","6,7,12,16","9,10","2,4,6,7","14,15,16"
    ];
    
    $arrCounts = [];
    
    array_walk($arrData, function($item, $key) use (&$arrCounts)    {
        foreach(explode(",",$item) AS $val)
        {
            if (!isset($arrCounts[$val]))   $arrCounts[$val] = 0;
            $arrCounts[$val]++;
        }
    });
    ksort($arrCounts);
    print_r($arrCounts);
    

    【讨论】:

      【解决方案3】:

      使用explode()将包含以逗号分隔的数字的变量转换为数组,并对数组的项进行计数。

      $string = '1,2,3,4';
      $array = explode(',',$string);
      echo "String contains ".count($array)." items";
      

      【讨论】:

      • 你的答案是错误的,它给出的项目总数而不是每个项目的计数。
      • @AnandPandey 没错。 OP 想要一种方法来计算逗号分隔字符串中的项目,这就是如何做到这一点。您需要先遍历行,这应该是不言自明的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多