我有一个电影列表,用户可以使用 jQuery UI Sortable 对他们最喜欢的电影进行排序(一切都很好)。序号越低,薄膜 (1) 越好,而序号越高 (26) 越差。电影列表可能无穷无尽,但在数据库中是固定的(用户无法添加更多),因此用户只能从 x 电影列表中选择。
电影不必在用户列表中,如果他们没有看过电影 5,那么它不会被包括在内(这可能会使问题更加复杂)。
目前,这存储在表中:
film_id | user_id | order
4 2 3
5 3 3
6 2 1
7 2 2
7 3 1
8 3 2
我想要的,但不知道从哪里开始是一个整体的“前 10 名”风格列表。ie 电影 7 是最受欢迎的,因为它在人们的名单中出现得更高,并且在更多的名单中。电影 6 可能是最受欢迎的,但它只在一个列表中?!
我被困在逻辑和Mysql查询上!
我在想我可能需要以某种方式加权订单?或者有一个单独的表格,其中包含每部电影的得分,并在每次编辑后更新它。如果以下查询仅基于表中项目的计数而不是当我想将位置添加到等式中时,它似乎是正确的想法。
SELECT ff.film_id, COUNT(ff.film_id) AS cnt, SUM(ff.order) AS rank FROM
`favourite_film` AS ff GROUP BY ff.film_id ORDER BY cnt DESC, rank ASC
我想我需要计算表中所有电影的数量和顺序的总和(但反过来?),然后我的理论就变得平淡了!
任何帮助或链接将不胜感激。谢谢。