MySQL视图 - 一行中有多对一的关系

时间:2014-07-22 21:10:54

标签: mysql view

我有一张包含电影信息的表格。它有ID,标题等。我有另一个名为类别的表,我有可用的类别;动作,戏剧等。 每部电影都可以分为多个类别。所以我创建了一个视图并加入了这些表。现在,即使重复影片,视图也会为每个类别显示一行。 我需要每部电影都有一行,并且类似于:'动作,戏剧,喜剧' (这基本上都是来自tbl_movies_categories的所有类别)。

我应该如何连接表/创建视图来实现这一目标?

1 个答案:

答案 0 :(得分:0)

这是正确的方法: 分组按唯一ID,然后使用group_concat()将值连接在一起。

CREATE VIEW `vw_metadata` AS
    select 
        `vw_movies`.`id` AS `id`,
        ...
        group_concat(`vw_movies_categories`.`title_category`
            separator ',') AS `categories`,
    from
        (`vw_movies`
left join `vw_movies_categories` ON (`vw_movies_categories`.`movie_id` = `vw_movies`.`id`))
    group by `vw_movies`.`id`