Mysql три таблицы объединяются при объединении столбца? - PullRequest
1 голос
/ 28 июля 2011

У меня есть следующие таблицы:

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 Ответ

1 голос
/ 28 июля 2011

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...