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」スタイル リストです。つまり、フィルム 7 が最も人気があります。なぜなら、人々 のリストの上位に表示され、より多くのリストに含まれているからです。フィルム 6 が最も人気があるかもしれませんが、リストは 1 つだけですか?!
私はそれを行うためにロジックと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
テーブル内のすべてのフィルムの数と順序の合計が必要だと思いますが (逆になっていますか?)、私の理論はフラットになります!
ヘルプやリンクは大歓迎です。ありがとう。