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