Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка записей в таблице БД [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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо