2012-01-29 154 views
0

我有以下問題。一個視頻有多個標籤,如高清晰度,720p,1080p等,每個標籤都有自己的記錄。所有的標籤都在它自己的表中它的命名標籤。MYSQL喜歡搜索2表

下面是示例表格標籤。

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

你'tag'不是一個數據庫,它是一個表。 – 2012-01-29 13:56:44

+0

感謝我的錯誤 – 2012-01-29 13:58:57

回答

1

我們假設你的意思,你指的數據庫

您將需要替換正確的表結構的視頻表:

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 
+0

我會盡力感謝 – 2012-01-29 14:13:11

+0

你有沒有正確的編碼?表格標籤不存在! – 2012-01-29 15:27:18

+0

@SaschaHeim再試一次。應該是'tag'而不是'tags' – 2012-01-29 15:44:54