Php 如何计算mysql表中的值数,其中一个字段可以包含多个值
我有一个表名user\u feedback,我在其中存储userfeedback 在这个表中,我有一列,名称product_id,我在其中存储产品id,即-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
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条记录创建新表我编辑了我的答案,并简要解释了如何做到这一点。伙计,你很棒,非常感谢,两个答案都解决了查询。伙计,你很棒,非常感谢,两个答案都解决了查询。