К примеру имеем следующие данные:
Таблица
category| id | name |
|--------------------|
| 1 | Драма |
| 2 | Комедия |
| 3 | Триллер |
И есть ряд публикаций, пусть будет
film| id | title |
|-------------------|
| 1 | Фильм1 |
| 2 | Фильм2 |
| 3 | Фильм3 |
Для их связи мне известны 2 метода:
1. Многие ко многим
2. Поле film.category в котором через запятую перечислять ID категорий
Со вторым методом проблем нету, а вот с первым возникли сложности и что-то я никак не могу сообразить как все же лучше сделать.
Т.е. создаю связывающую таблицу
film_category| film_id | cat_id |
|------------------|
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 3 | 2 |
И теперь задача в следующем, нужно вывести список фильмов и для каждого отобразить список его категорий.
Чтобы в результате получить что-то вроде такого:
| id | title | category* |
|-------------------------|
| 1 | Фильм1 | 1,2 |
| 2 | Фильм2 | 1,2,3 |
| 3 | Фильм3 | 2 |
Что-то мне подсказывает, что возможно есть способ получить это с помощью чего-то вроде concat, но к сожалению моих знаний mysql для этого не достаточно :(
При этом примем ко вниманию, что данные из таблицы
category были получены ранее и сформированы в массив:
$category = [
'1' => 'Драма',
'2' => 'Комедия',
'3' => 'Триллер',
];
И вот суть вопроса в следующем, возможно ли как-то получить вышеуказанный результат? Чтобы был список фильмов и в каждом фильме были перечислены его категории.
Можно конечно получить одним запросом список фильмов, а затем в цикле вытягивать список категорий, но я подобное не рассматриваю в принципе.