MYSQL喜欢用2个表搜索

时间:2012-01-29 13:53:41

标签: php mysql

我有以下问题。一个视频有多个标签,如高清,720p,1080p等,每个标签都有自己的记录。所有标签都在自己的表中,其命名标签。

以下是示例表格标记。

CREATE TABLE IF NOT EXISTS `tag` (
  `video_tag_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `video_id` bigint(20) DEFAULT NULL,
  `tag_name` varchar(300) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `tag_count` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`video_tag_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

因此,当我使用其他表中的类似搜索时,它会向我显示每个标记相同的视频。

我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

我们假设您指的是 table ,您可以参考数据库

您需要将正确的表格结构替换为视频表格:

SELECT 
  videos.video_id,
  videos.name,
  tag.tag_name
FROM videos JOIN tag ON videos.video_id = tag.video_id
WHERE videos.name LIKE '%the name of your video%'

以上将为视频的每个标记列出一行。

要在一行中返回标记列表,请使用GROUP_CONCAT()

SELECT 
  videos.video_id,
  videos.name,
  GROUP_CONCAT(tag.tag_name) AS tags
FROM videos JOIN tag ON videos.video_id = tag.video_id
WHERE videos.name LIKE '%the name of your video%'
GROUP BY videos.video_id, videos.video_name