|
Как сделать сортировку по алфавиту по части строки
|
|||
---|---|---|---|
#18+
Возник вопрос, с которым сижу уже достаточно долго. Задача - вывести отсортированные по алфавиту уникальные ячейки, но сортировка должна быть после определёного символа. Например Вася / Москва Петя / Ростов Коля / Новгород Разделитель - слеш-пробел, нужна сортировка по городу и только через Distinct т.к. данные могут повторяться при последующем выводе в выпадающий список <option> SELECT distinct `name` FROM `profile` ORDER BY SUBSTRING_INDEX('name', '/ ', -1) ASC выводит всё, что слева, а нужно справа от разделителя и по этому и сортировать. Есть ли какие-то варианты решения проблемы ? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 10:14 |
|
Как сделать сортировку по алфавиту по части строки
|
|||
---|---|---|---|
#18+
DISTINCT - это неявный GROUP BY. Соответственно использование негруппированного значения в ORDER BY нелегитимно. Pavel Myakotin Задача - вывести отсортированные по алфавиту уникальные ячейки, но сортировка должна быть после определёного символа. Например Вася / Москва Петя / Ростов Коля / Новгород Вот и показывайте ЗАДАЧУ. Структуру таблицы в виде CREATE TABLE (в теге SRC), пример данных в виде INSERT INTO (в теге SRC), и требуемый результат как таблицу (в теге Table, разделитель - запятая). Правильность форматирования проверяйте про кнопке Просмотр. Pavel Myakotin данные могут повторяться при последующем выводе в выпадающий список <option> Наличие таких повторений в примере данных - обязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 11:29 |
|
Как сделать сортировку по алфавиту по части строки
|
|||
---|---|---|---|
#18+
Спасибо за ответ. Если честно, я не совсем понял, что Вы имеете ввиду, не настолько хорошо знаю MySQL Сама задача такова Ячейки - Вася / Москва Ира / Москва Петя / Ростов Коля / Новгород Антон / Орёл В результате должно быть Москва Новгород Орёл Ростов То есть запрос дожен брать из строки правую часть после определённого символа и, не допуская повторений, отсортировать результат по алфавиту. Вот часть кода с запросом, который всё это делает, но т.к. SUBSTRING_INDEX берёт из строки то, что слева от символа-разделителя, естественно, не работает <option value=''>Выберите город</option>"; $query = "SELECT distinct `name` FROM `mybase` ORDER BY SUBSTRING_INDEX('name', '/ ', -1) ASC"; $query_result = mysqli_query($sql,$query); while($rows = mysqli_fetch_array($query_result)) { // и так далее, тут при выводе не должно быть повторов городов Столбец name содержит данные вида Имя (произвольное кол-во символов)|слеш-пробел|Город (произвольное кол-во символов) Единственное, о чём я прошу - это подсказать, каким образом составить запрос чтобы при запросе отделялась часть после слеш-пробел и была сортировка по алфавиту этой части при выводе без повторений одинаковых полей (если не distinct, то, может, where count ?) Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 11:56 |
|
Как сделать сортировку по алфавиту по части строки
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
fiddle ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 12:43 |
|
|
start [/forum/topic.php?fid=47&msg=40012568&tid=1828339]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 258ms |
0 / 0 |