表示するアニメーションをスケジュールできるscheduled_itemテーブルがあります。
アニメーションが再生されると、その属性is_playedがtrueに設定されます。
すべてのアニメーションが再生されると、スケジューラーは以前に表示されたアニメーションをキューに追加するため、画面は常にいくつかのアニメーションを再生します。
新しいアニメーションが到着したら、キューの前に追加する必要があります。理想的には、再生する次のアイテムを置き換えます。
schedule_itemは次のようになります。
CREATE TABLE scheduled_item (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`animation_id` bigint(20) DEFAULT NULL,
`is_played` tinyint(1) NOT NULL DEFAULT '0'
);
一部の行は次のようになります
+----+--------------+-----------+
| id | animation_id | is_played |
+----+--------------+-----------+
| 17 | 15 | 1 |
| 40 | 22 | 1 |
| 43 | 26 | 1 |
| 46 | 15 | 1 |
| 49 | 22 | 0 |
+----+--------------+-----------+
そのため、まだ再生されていないが過去に再生されたすべてのアニメーションのIDを取得しようとしています。この場合、私はid 49 /Animation_id22を探しています。
だからこれは私が思いついたものであり、それは機能しているようですが:
SELECT item_id
FROM scheduled_item
GROUP BY animation_id
HAVING count( animation_id ) > 1
AND MIN( is_played ) < 1
AND MAX( is_played ) > 0
ORDER BY id ASC;
- それを行うためのより良い方法はありますか?
- 私は正しい結果を得ていますか?