Присоединяйте все записи таблицы ссылок в одной строке

Я пытался получить запрос, который позволил бы мне помещать все музыкальные жанры события (Link table) в одну строку, но до сих пор я был безуспешным; он постоянно возвращает 2 строки с одинаковой информацией о событии в каждом, но изменение записей музыкального жанра в LEFT JOIN. Вот мой запрос:

SELECT 
    events.*
    , music_genres_link.* 
FROM events 
LEFT JOIN music_genres_link 
    ON events.id = music_genres_link.event_id 
WHERE events.id=1 
ORDER BY date DESC 

И вот что он возвращает:

Скриншот Phpmyadmin

Как мне собрать эти две строки в одном? Мне нужны как group_concat (), так и SELECT e . *, GROUP_CONCAT ( mgl . Genre_title ) как жанры из событий e LEFT JOIN music_genres_link mgl ON e . id = mgl . event_id ГДЕ e . id = 1 GROUP BY e . id ; колонны.

Я хотел бы получить всю строку события и оставить все музыкальные жанры, найденные в таблице ссылок слева от результата, таким образом:

[event result] [music_genre_1 (id, title)] [music_genre_2 (id, название)] и т. д.

mysql,sql,

1

Ответов: 2


1 принят

Я подозреваю, что вы просто хотите genre_title:

genre_id

Это предполагает, что вы хотите genre_titleединственного. Если вы хотите genre_id, вы можете добавить еще один столбец.


1

Кажется, у вас есть 2 строки, которые соответствуют соединению music_genres_link. Вы можете видеть это из двух значений gender_id - 5 и 295.

Теперь, когда вы отредактировали свой вопрос, вам нужно что-то, что не типично для SQL. Вы можете добиться этого с помощью PIVOT, но у вас нет ограничения на количество жанров, и я бы не рекомендовал его. Вам нужно переосмыслить свои таблицы и то, что вы хотите достичь.

MySQL, MS SQL,
Похожие вопросы