我在这方面很业余,但我想我知道我在哪些方面出了问题。我要做的是通过比较memberscores表中的rating列中的用户评分来创建一个100分的相似度评分,其中两个定义的userid($userid和$member)对于任何具有相同movieid值的内容都有一个现有评分(1-10)。
例如,memberscores具有以下列和数据:
movieid | userid | rating (out of 10)
================================
1 | 8 | 6
2 | 6 | 10
3 | 8 | 4
2 | 8 | 7
5 | 8 | 6
3 | 6 | 8
1 | 6 | 5
所以如果 $userid = 8
以及 $member = 6
在userid列中,我想要得到的结果是 73
(可能有100个)。从技术上讲,答案是73.333,但我四舍五入到最接近的数字。
我想我错的地方是我没有正确定义下面强调的那些条件。。。
SELECT ROUND(SUM(10-ABS((memberscores.rating WHERE memberscores.userid=$member)-(memberscores.rating WHERE memberscores.userid=$userid)))*10/count(movies.id)) as per
FROM movies
INNER JOIN memberscores
ON movies.id=memberscores.movieid
WHERE userid=$userid
and (memberscores.rating WHERE userid=$member) <> 0
and (movies.genre1='Fantasy' or movies.genre2='Fantasy' or movies.genre3='Fantasy')
GROUP BY userid
任何帮助都将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!