Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Рандомно сортировать, но сохранить нумерацию
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 370
Пользователь №: 18633
На форуме: 7 лет, 3 месяца, 23 дня
Карма:




Привет всем)))
Помогите, пожалуйста)))
Делаю я запрос к БД, получаю, припустим, 100 строк.
SELECT *
FROM `base`
WHERE ....
ORDER BY `base_id`

всё отлично, но мне нужно рандомно перемешать результаты..... НО! сохранить в кажной строке начальный номер строки.
например:
id-varchar
1,text
7,text
9,text
14,text
19,text

а получить в результате
id-varchar-numbefore
1,text-1
14,text-4
7,text-2
19,text-5
9,text-3

тоесть, после рандомной сортировки нужно знать номер строки до рандомной сортировки

Это сообщение отредактировал savelikan - 26.03.2016 - 12:37


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14962
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 25 дней
Карма: 443




savelikan, читай http://hudson.su/2010/09/16/mysql-optimiza...-order-by-rand/

Только учти, что если в выборке очень много строк, то запрос будет медленный.

Это сообщение отредактировал sergeiss - 26.03.2016 - 12:37


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 370
Пользователь №: 18633
На форуме: 7 лет, 3 месяца, 23 дня
Карма:




Цитата (sergeiss @ 26.03.2016 - 10:37)
savelikan, читай http://hudson.su/2010/09/16/mysql-optimiza...-order-by-rand/

Только учти, что если в выборке очень много строк, то запрос будет медленный.

В таблице около 10 000 строк, по заданым критериям мы получаем 100 результатов. тоесть здесь оптимизация не нужна.
нужно просто отсортировать рандомно но знать номер строки до рандомной сортировки


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DragonNoir  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 47
Пользователь №: 42691
На форуме: 8 месяцев, 17 дней
Карма: 2




Если тебе надо выбрать 100 строк по определенному критерию, а потом их перемешать, то в таком случае лучше сортировку перенести на сторону приложения.
Если надо выбрать 100 случайных строк в случайном порядке, то sergeiss дал правильный совет


--------------------
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 370
Пользователь №: 18633
На форуме: 7 лет, 3 месяца, 23 дня
Карма:




Цитата (DragonNoir @ 26.03.2016 - 10:46)
Если тебе надо выбрать 100 строк по определенному критерию, а потом их перемешать, то в таком случае лучше сортировку перенести на сторону приложения.

вот это и нужно
Тоесть, загнать все результаты без сортировки в массив, потом перемешать этот масив случайным образом...?


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14962
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 25 дней
Карма: 443




Цитата (savelikan @ 26.03.2016 - 12:41)
В таблице около 10 000 строк, по заданым критериям мы получаем 100 результатов.

Всё прекрасно делается на стороне БД :) Надо только правильно сделать. Сначала в подзапросе выбираем то, что надо. А потом это перемешиваем.

select * from
(
select .....
)
sub_query
order by rand()


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса