Php 平均额定值计数
我在一个网站上工作,它有10星级的评级系统。所有评级均存储在tbl_rating中,并具有以下属性:Php 平均额定值计数,php,mysql,database,cron,rating,Php,Mysql,Database,Cron,Rating,我在一个网站上工作,它有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) 我的问题是,如何计算商店的平均评分是最好的方法(基本上,我只需要将所有评分与特定的商店id相加,然后除以这些评分的数量)。每家商店都有av
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)
我的问题是,如何计算商店的平均评分是最好的方法(基本上,我只需要将所有评分与特定的商店id相加,然后除以这些评分的数量)。每家商店都有avg_rating列,我可以在其中存储价值
有没有办法告诉MySql数据库每小时统计一次这些数据?我是否应该在每次提交新评级后,甚至每次查询店铺属性avg_评级时计算它?有没有办法告诉数据库自动执行此操作,或者我必须从PHP运行这些操作?我正在使用PHP、Yii框架和MySQL数据库
谢谢您的帮助。您需要一个(不确定Yii是否有使这更简单的功能)
PHP
基本上,您需要编写一个PHP脚本来重新计算投票数,并将它们放在一个单独的表中,并且您需要该脚本每小时运行一次,或者您希望多长时间运行一次
cron命令类似于:
php updateRatings.php
MySQL
您可以使用类似于下一个命令的命令作为cron
mysql -h HOST -u USER -pPASS -e "UPDATE ..."
对于实际的SQL查询,您应该检查以下问题:
更新:
您可以使用类似以下内容的查询:
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
您可以随时使用cron
每小时启动一个php
脚本进行计算。非常感谢您的回复,我想我会尝试使用MySQL选项。欢迎您。添加了一个您可以使用的查询,我用您发布的表(以及我创建的一个新表)对其进行了测试,结果很有效。