nic*_*ass 5 php mysql database sorting sql-order-by
我不确定这是否可行,但在做"丑陋"的方式之前我需要确认:)
因此,"结果"是数据库中的帖子,存储方式如下:
this_rating)和投票数(this_num_votes).该数据成对存储,该表有3列:帖子ID /键/值.它基本上是WordPress表结构.我想要的是取出评分最高的帖子,根据这个公式排序:
br =((avg_num_votes*avg_rating)+(this_num_votes*this_rating))/(avg_num_votes +
this_num_votes)
我偷了这里的形式.
avg_num_votes并且avg_rating是已知变量(它们在每次投票时得到更新),因此不需要计算它们.
这可以用mysql查询完成吗?或者我是否需要获取所有帖子并使用PHP进行排序?
数据堆栈交换链接:
https://data.stackexchange.com/stackoverflow/s/2137/order-database-results-by-bayesian- rating
SELECT id,title,( AVG(this_num_votes) * AVG(this_rating) + this_num_votes * this_rating )
/ ( AVG(this_num_votes) + this_num_votes ) as br
FROM posts
LEFT JOIN (
SELECT DISTINCT post_id,
(SELECT meta_value FROM postmeta WHERE postmeta.post_id = pm.post_id AND meta_key ='this_num_votes') as this_num_votes,
(SELECT meta_value FROM postmeta WHERE postmeta.post_id = pm.post_id AND meta_key ='this_rating') as this_rating
FROM postmeta pm ) as newmeta ON posts.ID = newmeta.post_id
GROUP BY id,title,this_num_votes,this_rating
ORDER BY br DESC
Run Code Online (Sandbox Code Playgroud)