![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка записей в таблице БД [D5, Paradox]
Alex_AA © (2006-08-29 15:59:00)Подскажите, пожалуйста, как перемешать случайным образом записи (строки) в таблице базы данных? Сортировка по убыванию есть, по возрастанию тоже, а как просто перемешать?
Alex_AA (2006-08-30 06:17:00) [1]Спасибо. Идею понял
Anatoly Podgoretsky (2006-08-29 20:03:00) [2]Скажем так повезет если будет совпадать
ANB (2006-08-29 18:05:00) [3]
> Anatoly Podgoretsky © (29.08.06 16:56) [11]
Вопросе взаимоисключающие требования. Но по
> Сортировка по убыванию есть, по возрастанию тоже, а как
> просто перемешать?
я протелепатировал, что автор имел в виду порядок записей в результирующем наборе данных.
> чем гарантируется неупорядоченность
Она не гарантируется, если не было удалений.
Но порядок записей в результирующем наборе данных может отличаться от физического порядка хранения записей в файле таблицы.
Anatoly Podgoretsky (2006-08-29 16:56:00) [4]ANB © (29.08.06 16:53) [10]
Не о них идет речь, а том, как поместить/переместиь какую то запись в конкретную позицию, не хакерскими методами. Кстати в вопросе фигурирует Парадокс, а это как раз такая база, которая повторно использует удаленные записи, чем гарантируется неупорядоченность, даже по времени добавления.
ANB (2006-08-29 16:53:00) [5]
> Anatoly Podgoretsky © (29.08.06 16:23) [9]
Ну она тем более не случайна, а подчиняется некоему алгоритму, придуманному разработчиками СУБД :)
Anatoly Podgoretsky (2006-08-29 16:23:00) [6]Кроме того нет механизма, который обеспечил бы такую операцию, как добавить/поместить запись, например третей. А вопрос стоит именно о сортировке в базе!!!
Anatoly Podgoretsky (2006-08-29 16:21:00) [7]ANB © (29.08.06 16:20) [7]
Ты это гарантируешь?
Гарантируешь, что запрос вернет именно в этом порядке?
Теория и практика говорит, что нет.
ANB (2006-08-29 16:20:00) [8]
> они в случайном порядке изначально
Ну, не совсем в случайном. Обычно они валяются в порядке добавления. Если же были удаления, то некоторые СУБД используют место удаленных записей под новые. SQL запрос, если не указан order by возвращает данные в том порядке, в каком удобнее серверу (как правило, как выгреблись, так и приедут). О нормальной случайности тут речи быть не может.
Anatoly Podgoretsky (2006-08-29 16:13:00) [9]Alex_AA © (29.08.06 15:59)
Если не рассматривать некоторые изврашения, то в базе данные не отсортированы, они в случайном порядке изначально.
Reindeer Moss Eater (2006-08-29 16:13:00) [10]Как соотносятся друг с другом случайность и отсортированность ?
:)
novill (2006-08-29 16:11:00) [11]> Нужно значение поля, или функция от этого значения, дающая
> "случайный" результат.
выбираешь наиболее уникальное для таблицы (сочетание полей), какую-нить хеш-функцию от этого безобразия и по ней сортируешь :)
unknown (2006-08-29 16:08:00) [12]Alex_AA © (29.08.06 15:59)
По идее, записи в бд и так лежат в случайном порядке.
Если же так необходимо такую псевдо рандомную сортировку -
то надо добавить отдельное поле, в которое выводить случайные
числа. По нему и сортировать. Вполне "случайный" порядок получится :)
Sergey13 (2006-08-29 16:03:00) [13]> [0] Alex_AA © (29.08.06 15:59)
Нужно значение поля, или функция от этого значения, дающая "случайный" результат.
Reindeer Moss Eater (2006-08-29 16:02:00) [14]Если есть сортировка, если записи отсортированы, то записи не лежат в случайном порядке. И наоборот.