可以通过ID引用的用户如下表所示:
users:
user_id
我已经尝试过一种解决方案,以跟踪显示的观看次数
tvshow_hits:
user_id|show_id
还有一个表格,其中包含详细信息:
tvshows:
show_id|name
但这不是必需的,我愿意改变。我认为,如果他们观看过,不必再跟踪各个视图,因为与音乐电视节目和电影不同的是,它们仅被观看一次,而如果再次被观看,它们就不会承载任何“重量”。
所以现在我将倒退:
结果页面应如下所示:
看的人也看
South Park 40%
Family Guy 20%
Something 10%
因此,我需要的是查询和(如果需要)PHP代码
选择节目(按P DESC的顺序),与其他节目(已观看的用户观看过的节目)相比较的观看人数(以百分比形式),视用户观看节目而定谁看过LIMIT x
我希望这是我最好的解释方式,请随意考虑另一种方法来做我想做的事情。所有建议和帮助欢迎。
最佳答案
未经测试,但类似这样:
SELECT name, Count(1) AS no_users
FROM
tvshowhitdetails
WHERE
userid IN (
SELECT userid
FROM
tvshow_hits
WHERE
showid = @showid
)
AND
showid <> @showid
GROUP BY
name
ORDER BY
no_users DESC
将为您提供节目名称(
tvshowhitdetails
是将您的show_hits和节目详细信息表连接起来的视图)以及观看该节目的人数。然后,您可以获取另一个查询中的用户总数,以计算出您的百分比。更新资料
您的tvshowhitdetails视图如下所示:
CREATE VIEW tvshowhitdetails
AS
SELECT tvshow_hits.UserId, tvshow_hits.ShowId, tvshows.Name
FROM tvshow_hits LEFT OUTER JOIN
tvshows ON tvshow_hits.ShowId = tvshows.ShowId
关于php - 电视节目建议算法和SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1782029/