我正在开发一个包含视频部分的 PHP 应用程序。到目前为止,我已经将视频标记构建为视频分类。添加视频时,您可以从 25 个预定义标签中选择最能描述您的视频内容的标签。
然后将这些标签保存在一个单独的表中,videotags
如下所示:
video_id | first_tag | second_tag | third_tag | etc.
----------------------------------------------------
123 | 1 | 0 | 1| ...
这意味着,当您在表单中签入某个标签时,它在数据库中存储为 1,未选中为 0。
现在,当您查看视频时,您可以看到一个主体,即视频和描述所在的位置,以及一个右侧列,应在其中类似视频的位置。
我想构建一个 MySQL 查询,它将返回 6 个类似的视频,基于具有如下规则的视频标签:
这些视频与观看的视频具有最相同的视频标签,将被订购并限制为 6 个。
例如,我正在尝试查看一个 ID 为 12、有六个填充标签的视频,在我的数据库中我有 3 个视频:
- ID 为 22 的视频有 7 个标签和 4 个标签与 ID 为 12 的视频相同。
- ID 25 的视频有 8 个标签和 5 个标签与 ID 12 的视频相同。
- ID 45 的视频有 4 个标签和 3 个标签与 ID 12 的视频相同。
正如我在主题名称中提到的,我正在 CodeIgniter 中构建这个 PHP 应用程序,所以这个查询将作为一个函数在特定模型中运行,我将在这个函数中传递这样的$tags
数组$tags['first_tag'] = 1
。
谁能帮我按照指定的方式构建这个查询?我正在使用 CI 中的 Active Record 类,因此使用它会很受欢迎。
谢谢各位回复