php 评级,php – 平均评级值计数

我正在一个拥有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 ..."

更新:

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

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.

标签:php,mysql,database,cron,rating

来源: https://codeday.me/bug/20190620/1244583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值