mysql group_concat заказывают utf8

У меня есть следующая проблема, у меня есть 3 таблицы (весь используемого utf8 / utf8_general_ci кодирующий) фильмы, каналы, у меня также есть 3 таблицы movie_channels который

просто комбинация других двух со всего 2 полями: movie_id, channel_id вот моя таблица каналов (код, имя)

'1', 'ОРТ'
'2', 'ТК Спорт'
'3', 'ТК ТНВ'
'4', 'НТВ'
'5', 'НТВ+'
'6', 'TSN'

вот является моя movie_channels таблица (фильм _id, channel_id) channel_id ссылками code поле в таблице каналов

'19', '2'
'19', '6'
'95', '1'
'95', '4'
'96', '1'
'96', '4'
'97', '1'
'97', '4'
'98', '1'
'98', '4'
'99', '1'
'99', '4'
'100', '1'
'100', '4'

не возражайте против кавычек на значениях идентификаторов. они - весь ints, конечно, не символы, он просто вставляет проблему

для каждого фильма я должен отобразить список разделенных запятой значений каналов, я использовал mysql group_concat

select t.movie_id,( select group_concat(c.name) from 
movie_channels mc
join channels c  on mc.channel_id=c.code
where mc.movie_id = t.movie_id

order by code desc )as audio_channel from movies t 

но мне не нравится порядок concat для movie_id № 19, мне нужно вышеупомянутое sql для отображения TSN, ТК Спорт, но это продолжает возвращать меня ТК Спорт, TSN. Я пытался использовать порядок кодом desc без удачи, попробованного порядка char_length (asc) без успеха какие-либо идеи?

1
задан oluies 25 July 2010 в 13:00
поделиться

2 ответа

Если для каждого фильма вы хотите перечислить все каналы, которые показывают этот фильм, вам нужно что-то вроде этого:

SELECT
  mc.movie_id,
  GROUP_CONCAT(c.name) AS channels
FROM movie_channels AS mc
JOIN channels AS c
ON c.code = mc.channel_id
GROUP BY mc.movie_id
ORDER BY c.code DESC;
1
ответ дан 2 September 2019 в 22:47
поделиться

Вы можете добавить ORDER BY предложение внутри GROUP_CONCAT() агрегата, чтобы настроить порядок сгруппированной строки.

1
ответ дан 2 September 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: