MySQL更新和查询或PHP中的Sum

时间:2013-06-10 14:46:37

标签: php mysql sql phpmyadmin sql-update

我不知道如何做或者可以在查询中。? 可以用PHP完成。如果是任何想法或例子。

这里有2张桌子。

查看

id    pid   published
--    ---   ---------
 1     12           0
 2     14           1
 3     16           1

评分

id   rid   ratings                 sum
--   ---   ---------------------   -------
 1     2   4,5,3,3,3.5,5,5,5,4,5   42.5000
 2     4   4,5,3,3,3.5,5,5,5,4,5   42.5000
 3     1   5,5,4,4,5,5,4,4,4,4     44.0000

我想做的是

  1. 根据 Review.id = Rating.rid更新评级表
  2. 更新评分字段,其中有 3 2 1 更新为4,例如此4,5, 3 ,3,3.5, 5,5,5,4,5应为4,5, 4 4 4 ,5,5,5,4,5
  3. 根据更新评级字段 SUM 字段应自动更新评级值的总和。示例 42.5000 应为 45.0000
  4. 如果不清楚我试着解释我的问题,请让我修改或给你更多详细信息。

    我的表与示例完全相同。评级字段具有文本数据类型。没有另一个评级表。

    任何帮助都将非常感激。

    谢谢你。

2 个答案:

答案 0 :(得分:2)

您应该重新设计数据库结构并将评级值存储在另一个表中,例如,使用这样的结构

id | review_id | value

然后你就可以轻松完成所有这些事了。

如果无法进行此更改,您可能应该在PHP中执行此操作。我的意思是,您查询所有必要的数据,在数组中按ratings展开,并对数组执行操作。

但我强烈建议将评级转移到另一个表格中。

答案 1 :(得分:1)

  • 选择评分行(SELECT * FROM Rating WHERE rid=YOUR_RID

  • 以PHP(mysqli_fetch()PDOStatement->fetch()等方式获取数据。)

  • 对于转换字符串ratings到数组使用explode函数

  • 要与数组交互,您可以使用foreach周期。

    $ sum = 0;

    foreach($ array as& $ rating){

    if($ rating< 4)$ rating = 4;

    $总和+ = $等级;

    }

相关问题