mysql group_concat упорядочить по utf8 - PullRequest
1 голос
/ 25 июля 2010

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

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

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

вот моя таблица movie_channels (movie _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'

не обращайте внимания на кавычки значений id. все они, конечно, целые, а не символы, это просто вставка вопроса

для каждого фильма мне нужно отобразить список каналов через запятую я использовал 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), но безуспешно есть идеи ?

Ответы [ 2 ]

1 голос
/ 25 июля 2010

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

1 голос
/ 25 июля 2010

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

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