加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 平均评级值计数

发布时间:2020-12-13 17:23:49 所属栏目:PHP教程 来源:网络整理
导读:我正在一个拥有10星评级系统的网站上工作.所有评级都存储在tbl_rating中并具有以下属性: idheadingdescriptionrating (number of stars,1 to 10)shop_id (each rating belongs to a shop - my site is a catalog of shops) 我的问题是,如何计算一个商店的平
我正在一个拥有10星评级系统的网站上工作.所有评级都存储在tbl_rating中并具有以下属性:

id
heading
description
rating (number of stars,1 to 10)
shop_id (each rating belongs to a shop - my site is a catalog of shops)

我的问题是,如何计算一个商店的平均评级的最佳方式(基本上我只需要将所有评级与特定shop_id相加并将它们除以这些评级的数量).每个商店都有列avg_rating,我可以存储值.

有没有办法告诉MySql数据库每小时统计一次这个统计数据?我应该在每次提交新评级后计算它,还是每次查询商店属性avg_rating时?有没有办法告诉数据库自动执行此操作,还是必须从PHP运行这些操作?我正在使用PHP,Yii框架和MySQL数据库.

谢谢你的帮助.

解决方法

你需要一个 cron job(不确定Yii是否具有使这更容易的功能).

PHP

基本上,您需要编写一个重新计算投票数的PHP脚本,并将它们放在一个单独的表中,并且您需要该脚本每小时运行一次,或者您需要多长时间运行一次.

cron命令将类似于:

php updateRatings.php

MySQL的

您可以使用类似于下一个命令的命令作为cron.

mysql -h HOST -u USER -pPASS -e "UPDATE ..."

对于实际的SQL查询 – 您应该检查这个问题:MySQL – UPDATE query based on SELECT Query

更新:

您可以使用类似于此的查询:

UPDATE
    tbl_averages ta
SET 
    rating =
    (SELECT 
        AVG(tr.rating)
    FROM 
        tbl_rating tr
    WHERE 
        ta.shop_id = tr.shop_id)

使用表tbl_averages包含cols shop_id和rating.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读