循环查找相隔几秒的几乎匹配的文件名

Looping to find nearly matching file names separated by a few seconds

我是 SQL 的新手,我的数据库设计可能很差,但是如果您能帮助我尝试匹配文件,我将不胜感激。

项目: 摄像机在检测到运动时会记录图像文件和视频文件,然后通过 FTP 上传到我的 raspberry Pi。文件被拾取然后添加到“待定文件”table:

Filename  File Type (jpg/h264)  Size   Date (e.g.20200610)  Time (e.g. 115534)

不幸的是,视频和图像文件之间的时间戳与摄像头有些不同。有时它们相隔一秒,有时相隔 0 秒,有时长达 7 秒。考虑到相机生成的数据量及其建模,我只会通过丢弃相差超过 2 秒的文件来丢失大约 5% 的素材。另外,先上传图片文件还是先上传视频文件似乎也有所不同。

我正在努力寻找识别这些匹配文件的最佳方法。目前,我 运行 通过 php 中的 for 循环将所有数据(按日​​期然后时间排序)并将每个文件与其前后的文件进行比较,但它偶尔会匹配图像文件到错误的视频(更早或更晚),因为文件不是以图像、视频、图像、视频等形式出现的。

查看之前的答案,我认为我可能需要将我的 table 拆分为两个(待定视频)和(待定图像),然后进行加入,但这超出了我在 SQL查询。任何帮助,将不胜感激。谢谢!

这个怎么样?

select * from
(select * from PENDING_FILES where File_Type="IMAGE") a
inner join
(select * from PENDING_FILES where File_Type="VIDEO") b
on
(a.Date=b.Date and abs(a.Time-b.Time)<9999)