MySQL结合了输出数据

时间:2011-10-23 15:45:36

标签: mysql

对于MySQL来说,我是一个新手。我很难找到这个,但我敢打赌解决方案很简单。我有以下表格:

  • movie_id
  • MOVIE_TITLE

con_genres(其他2之间的连接表)

  • movie_id
  • genre_id

流派

  • genre_id
  • 名称

我尝试了不同的查询,但我不断获得这些结果

1 | Avatar | Sci-fi
1 | Avatar | Fantasy
2 | Matrix | Sci-fi
2 | Matrix | Fantasy (this one is non existent)

但我想要以下结果

1 | Avatar | Sci-fi, Fantasy
2 | Matrix | Sci-fi

通过1个查询获得此功能的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

没有运行它,但这应该有效:

SELECT m.movie_id, MIN(m.movie_title), GROUP_CONCAT(g.name)
FROM movies m
LEFT JOIN con_genres c ON c.movie_id = m.movie_id
LEFT JOIN genres g ON c.genre_id = g.genre_id
GROUP BY m.movie_id

这里的想法是加入三个表(这将产生类似你的第一个示例结果),电影ID组(显然,因为我们只需要每部电影一行)并使用GROUP_CONCAT来选择全部每个电影的流派名称用逗号分隔的字符串。