Mysql三表连接同时连接一列?

时间:2011-07-28 17:03:27

标签: mysql join concatenation

我有以下表格:

Table categories {
  -id-       -name-
  1          Action
  2          Comedy
  4          Drama
  5          Dance
}

Table movies {
  -id-       -name-      -description-
   1         Example 1   Movie description 1
   2         Example 2   Movie description 2
   4         Example 3   Movie description 3
}

Table movies_categories {
  -movie_id-     -category_id-
  1              2
  2              1
  4              3
}

我想从电影表中选择所有内容,并且还将该电影的类别连接在一个以逗号分隔的列中(或者以逗号分隔的任何内容)。

我自己给了它一个镜头,但我无法连接类别(现在它只选择第一个类别并忽略其余类别),而且我也无法添加WHERE子句,这是我真正需要的。我刚收到语法错误,为什么会有任何想法?

SELECT movies.*, categories.name FROM movies LEFT JOIN movies_categories ON (movies.id = movies_categories.movie_id) LEFT JOIN categories ON (movies_categories.category_id = categories.id)

1 个答案:

答案 0 :(得分:1)

您可以使用GROUP_CONCAT:

SELECT movies.*, GROUP_CONCAT(categories.name)
FROM movies
LEFT JOIN movies_categories ON (movies.id = movies_categories.movie_id)
LEFT JOIN categories ON (movies_categories.category_id = categories.id)
GROUP BY movies.id