SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 30.12.2010 03:26:00

Alex22
Участник
Зарегистрирован: 30.12.2010
Сообщений: 2

Сортировка "по кругу"

Доброго времени форумчанам.
Не могу решить задачу сортировки на mysql.
Есть таблица и в ней первое поле автоинкремент а второе поле число (которое может повторятся).
Как вывести строки из этой таблицы отсортировав их по кругу во втором поле.
Т.е,  имеем данные в двух полях:
1 1
2 1
3 2
4 2
5 2
6 3
7 3

На выходе получить:
1 1
3 2
6 3
2 1
4 2
7 3
5 2

числа второго столбца повторяем по кругу по возрастанию - 123 123 2 (2 последнее оставшееся в примере).

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

Неактивен

 

#2 30.12.2010 06:27:39

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

Re: Сортировка "по кругу"

Alex22 написал:

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

Как раз в таком случае логично отсортировать пару чисел, а потом сделать запрос объединяющий с другими полями.


Что касается сортировки, то:

select id,q from
(select tablename.*,@ord:=100*@i+q as ord from tablename,(select @i:=0,@p:=0,@ord:=0) t
where if(@p=q,@i:=@i+1,(@i:=0) or (@p:=q)))t1 order by ord;


В данном примере таблица `tablename` имеет поля id (автоинкремент ) и q (второе поле число, которое может повторятся).

Неактивен

 

#3 02.01.2011 17:19:21

Alex22
Участник
Зарегистрирован: 30.12.2010
Сообщений: 2

Re: Сортировка "по кругу"

Респект vasya!
Именно это мне и нужно было. Как то я совсем позабыл, что можно юзать матфункции в запросе. А организовать отдельную сортировку после обработки - это я уже сделаю, мне сам запрос нужен был который круг делает. Сенкс.

Неактивен

 

Board footer

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