我对此非常业余,但是我想我知道我要出问题的地方。我想做的是,通过比较两个实例中定义了 userid的每个实例的会员评分表中 rating 列中的用户评分,来创建100分的相似度评分($ userid和$ member)对具有相同 movieid 值的任何内容都具有现有的评分(1-10)。
例如, 会员分数 具有以下列和数据:
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 列中的$userid = 8
和$member = 6
,我尝试获得的预期结果是73
(可能是100)。从技术上讲,答案是73.333333333,但我舍入到最接近的数字。
我认为我要出问题的部分是我没有正确定义下面突出显示的那些条件...
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
任何帮助将不胜感激。