Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 如何计算mysql表中的值数,其中一个字段可以包含多个值_Php_Mysql_Count - Fatal编程技术网

Php 如何计算mysql表中的值数,其中一个字段可以包含多个值

Php 如何计算mysql表中的值数,其中一个字段可以包含多个值,php,mysql,count,Php,Mysql,Count,我有一个表名user\u feedback,我在其中存储userfeedback 在这个表中,我有一列,名称product_id,我在其中存储产品id,即- f_id f_name product_id 1 x 5 2 y 1,3 3 z 1,5 4 A 2,3,4,7 产品表是- product_id

我有一个表名user\u feedback,我在其中存储userfeedback

在这个表中,我有一列,名称product_id,我在其中存储产品id,即-

     f_id  f_name      product_id
       1      x          5
       2      y          1,3
       3      z          1,5
       4      A          2,3,4,7
产品表是-

 product_id   pname
      1      samsung
      2      apple
      3      micromax
      4      vivo
      5      sony
      6      lenovo
      7      xolo
如何知道每个产品的产品数量

前-


据我所知,你不能直接这么做。在我看来,首先需要分解数组中的所有产品id(使用PHP分解函数),然后可以计算给定pname的所有产品。如果您需要更多信息,请告诉我。

据我所知,您不能直接这样做。在我看来,首先需要分解数组中的所有产品id(使用PHP分解函数),然后可以计算给定pname的所有产品。如果您需要更多信息,请告诉我。

如果您可以控制这些表的结构,我建议实施适当的N:N关系,从
反馈
表中删除
product\u id
,并创建一个新表
prod\u fb\u rel
,其中只有
product\u id
f\u id

在那张桌子上

f_id  | product_id
   1  |          5
   2  |          1
   2  |          3
   3  |          1
   3  |          5
   4  |          2
   4  |          3
   4  |          4
   4  |          7
您需要的查询将非常简单

select  prdname, count(*)
from    product t1
join    prod_fb_rel t2
on      t1.product_id = t2.product_id
group by prdname
编辑


要从您现在拥有的数据开始填充新表,您可能应该定义一个
split
函数(like),然后编写一个获取每个现有记录的过程,循环查看
产品\u id
中的id数量,并在每次迭代中使用
split
函数提取id并将其插入新表中。

如果您可以控制这些表的结构,我建议实现适当的N:N关系,从
反馈
表中删除
产品id
,并创建一个新表
prod\u fb\u rel
,其中仅
产品id
f\u id

在那张桌子上

f_id  | product_id
   1  |          5
   2  |          1
   2  |          3
   3  |          1
   3  |          5
   4  |          2
   4  |          3
   4  |          4
   4  |          7
您需要的查询将非常简单

select  prdname, count(*)
from    product t1
join    prod_fb_rel t2
on      t1.product_id = t2.product_id
group by prdname
编辑

要从您现在拥有的数据开始填充新表,您可能应该定义一个
split
函数(like),然后编写一个获取每个现有记录的过程,循环查看
产品\u id
中的id数量,并在每次迭代中使用
split
函数提取id并将其插入新表中。

类似的内容(如果无法更改结构)(但请注意性能…)

输出:

    PNAME   RC
1   samsung 2
2   apple   1
3   micromax    2
4   vivo    1
5   sony    2
6   lenovo  0
类似这样的事情(如果你不能改变结构)(但要注意性能…)

输出:

    PNAME   RC
1   samsung 2
2   apple   1
3   micromax    2
4   vivo    1
5   sony    2
6   lenovo  0
请尝试上面的代码。希望这会有所帮助


请尝试上面的代码。希望这会有所帮助。

您控制了数据库结构吗?该模型可以做很多改进,以使此类查询更加完善easier@StefanoZanini-对不起,我没有理解你?你能帮我找出上面的解决方案吗?你能控制数据库结构吗?该模型可以做很多改进,以使此类查询更加完善easier@StefanoZanini-对不起,我没有理解你?请你帮我找出上面的解决方案好吗?Thanx很多,这是排序此查询的完美方法,但一个主要问题是如何使用用户反馈表中现有的2500条记录创建新表。我编辑了我的答案,并简要说明了如何做Thanx很多,这是排序此查询的完美方法,但是一个主要的问题是如何用用户反馈表中现有的2500条记录创建新表我编辑了我的答案,并简要解释了如何做到这一点。伙计,你很棒,非常感谢,两个答案都解决了查询。伙计,你很棒,非常感谢,两个答案都解决了查询。