Я подозреваю, что вы просто хотите genre_title
:
genre_id
Это предполагает, что вы хотите genre_title
единственного. Если вы хотите genre_id
, вы можете добавить еще один столбец.
Я пытался получить запрос, который позволил бы мне помещать все музыкальные жанры события (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
И вот что он возвращает:
Как мне собрать эти две строки в одном? Мне нужны как 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, название)] и т. д.
Кажется, у вас есть 2 строки, которые соответствуют соединению music_genres_link
. Вы можете видеть это из двух значений gender_id - 5 и 295.
Теперь, когда вы отредактировали свой вопрос, вам нужно что-то, что не типично для SQL. Вы можете добиться этого с помощью PIVOT, но у вас нет ограничения на количество жанров, и я бы не рекомендовал его. Вам нужно переосмыслить свои таблицы и то, что вы хотите достичь.