这是我在这里的第一篇文章,因为我真的需要一些帮助,因为这个问题使我发疯...
我在数据库中有2个表(此处已简化):
队列列表:
+--+------+-------------------+-------+------+------+
|ID|songID| ETA |artist |title |album |
+--+------+-------------------+-------+------+------+
|1 |5 |2018-10-01 00:00:01|artist1|title1|album1|
|2 |6 |2018-10-01 00:05:01|artist2|title2|album2|
+----+----+-------------------+-------+------+------+
歌曲:
+--+-------+------+------+-------------------+-------------------+-------------------+-------------------+
|ID|artist |title |album | date_played | artist_played | title_played | album_played |
+--+-------+------+------+-------------------+-------------------+-------------------+-------------------+
|5 |artist1|title1|album1|2018-10-01 11:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|
|6 |artist2|title2|album2|2018-10-01 11:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|
|9 |artist9|title9|album9|2018-09-01 01:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|
+--+-------+------+------+-------------------+-------------------+-------------------+-------------------+
播放歌曲时,"date_played"
表中的dbo.songs
列将用current timestamp
更新。
对于所有与播放曲目具有"artist_played"
相同的导入曲目,将更新"title_played"
,"album_played"
,artist/title/album
列。
每次将曲目添加到播放列表("dbo.queuelist"
表)时,ETA
列时间戳都会增加(例如,ID#2中的行的ETA =当前时间戳+持续时间或ID#1歌曲)等等。因此,它基本上会告诉您轨道何时开始。
我的问题是我需要选择一些音轨,但要间隔一些时间。
为简单起见,假设我有track, artist, title, album
的{{1}}分离时间,当我从60 minutes
表中选择音轨时,我会有这样的东西:
dbo.songs
结果将添加到SELECT ID FROM songs
WHERE (TIMESTAMPDIFF(MINUTE, date_played, NOW())>60
AND TIMESTAMPDIFF(MINUTE, artist_played, NOW())>60
AND TIMESTAMPDIFF(MINUTE, title_played, NOW())>60
AND TIMESTAMPDIFF(MINUTE, album_played, NOW())>60)
ORDER BY date_played ASC LIMIT 10;
表中
这很好,但是某些结果可能已经在"dbo.queuelist"
中,如果满足分离时间条件,这很好,但是我不知道如何检查。
我知道我需要确定"dbo.queuelist"
中是否已存在track, artist, title or album
,如果是,则需要比较queue
中date_played, artist_played, title_played, album_played
中的每个时间戳表格,并附上相应结果的"dbo.songs"
时间戳。
例如,我可以在ETA
专辑的dbo.queuelist
中有一个曲目,因此无论我从"X"
中选择具有相同dbo.songs
的曲目,我都需要确保他们之间将是60分钟。
感谢您的帮助。 谢谢!