SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.01.2016 12:20:21

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

substring_index сортировка

select substring_index(rubric,'#',3) as rubric, min(id) as id, count(*) from table group by substring_index(rubric,'#',3)

Здравствуйте, подскажите пожалуйста.
Скажите, сделать сортировку id в данном примере. Чтобы выводил не наименьший id, а id у которого скажем самый большой рейтинг. Т.е отсортировать id внутри группировке по полю raiting?


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#2 15.01.2016 15:19:19

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: substring_index сортировка

Неактивен

 

#3 15.01.2016 21:47:51

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: substring_index сортировка

Все прочитал, но так и не понял как решить задачу.


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#4 15.01.2016 21:55:26

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: substring_index сортировка

А нельзя как-то принудить брать все значения из одной и той же строки, а отсортировать их по max(reiting)?


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#5 15.01.2016 22:22:15

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: substring_index сортировка

select substring_index(rubric,'#',3) as rubric, min(id) as id, name, count(*) from table group by substring_index(rubric,'#',3)

И название должно совпадать. А так получается id одного товара, а название другого


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#6 16.01.2016 09:47:18

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: substring_index сортировка

platedz написал:

Все прочитал, но так и не понял как решить задачу.

в примерах из статьи замените:
user_id   --  rubric 
time   --  raiting
post  --  name, id и прочие нужные вам поля

Неактивен

 

#7 16.01.2016 21:05:02

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: substring_index сортировка

Исходя из второго способа, я так понял сделать это лучше всего так
И данный пример выведет мне лучшие по рейтингу

select substring_index(rubric,'#',3) as rubric, max(concat_ws(','raiting,id)) as id, count(*) from table group by substring_index(rubric,'#',3)

Поправьте меня, если я где-то ошибся.
Если все правильно, то возникает вопрос, а как мне вывести только id, те. урезать до запятой с конца, с учетом, что если raiting будет равен нуль, то выведет безо всяких запятых только id


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#8 17.01.2016 09:53:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: substring_index сортировка

а разве у вас значения рейтинга фиксированной ширины, т.е. всегда число от 0 до 9 ?
учитывая, что вы берете max от рейтинга, а не от вычислений над ним, то вам этот способ не обязателен

Неактивен

 

#9 17.01.2016 14:43:24

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: substring_index сортировка

Я планирую не только рейтинг. Сортировка по дате, рейтингу, по количеству просмотров, они все числовые и можно получить самое высокое значение. Все они разной длины но в любом случае делятся по сепаратору, теперь было бы неплохо урезать значение "дата рейтинг или количество просмотров, идентификатор название или еще что-то" до "идентификатор название или еще что-то", можно конечно это сделать уже с результатом, но хотелось бы узнать можно ли как-то в mysql


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#10 17.01.2016 16:43:45

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: substring_index сортировка

что-то я теряю нить ваших рассуждений.
чем не подходит, например, третий способ?

Неактивен

 

#11 17.01.2016 16:48:20

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: substring_index сортировка

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


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#12 17.01.2016 16:51:48

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: substring_index сортировка

используйте первый smile

Неактивен

 

#13 17.01.2016 16:59:20

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: substring_index сортировка

так там же тоже подзапрос. Второй мне показался самым производительным. Или я ошибаюсь?


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#14 17.01.2016 17:13:36

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: substring_index сортировка

в одном случае подзапрос в другом лишние вычисления
преждевременная оптимизация - зло

Неактивен

 

#15 17.01.2016 17:34:28

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: substring_index сортировка

Так сделал.

select substring_index(rubric,'#',3) as rubric, substring_index(max(concat_ws(',',reiting,id)),',',-1) as id, count(*) from table group by substring_index(rubric,'#',3)

Отредактированно platedz (17.01.2016 17:35:18)


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson