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

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

Как выбрать случайную запись в IB?


_dimka ©   (2006-05-18 12:25:00) 

Как выбрать случайную запись в IB?
Заранее спасибо!


_dimka   (2006-05-19 10:32:00) [1]

Всем огромное спасибо!
Особенно Sergey13!


Deniz   (2006-05-19 06:31:00) [2]


> _dimka ©   (18.05.06 17:58) [7]
>
> Структура оч простая:
> id - ключ
> gr - ид группы
> name - название
>
> > select max(id) from table where id < random(max(id))
>
> не подойдет, т.к.:
> 1) запись может быть удалена
> 2) нужно выбрать случайную запись в групе т.е. where gr=2
> например
>

Не нравится max(id) пользуй min(id)
select min(id) from table where id >= random(max(id)) and gr=2


Desdechado   (2006-05-18 18:17:00) [3]

пишется ХП, которая возвращает набор данных по указанной в параметре группе и нумерует строки в этом наборе
пишется SQL, который выбирает случайную строку с номером не более, чем кол-во строк в наборе


_dimka   (2006-05-18 17:58:00) [4]

Структура оч простая:
id - ключ
gr - ид группы
name - название

> select max(id) from table where id < random(max(id))

не подойдет, т.к.:
1) запись может быть удалена
2) нужно выбрать случайную запись в групе т.е. where gr=2 например


Sergey13   (2006-05-18 14:20:00) [5]

2[5] _dimka ©   (18.05.06 13:39)
Для того, что бы что-то придумать, надо знать на какую тему думать. 8-)
Например структуру таблицы и характер ее работы.
Можно например взять
select max(id) from table where id < random(max(id))


_dimka   (2006-05-18 13:39:00) [6]


То novill  


В запросе выбрать случайную запись, т.е. Sergey13 ©  прав, но какое имено условие поиска?? чет ничего в голову не лезет...


novill   (2006-05-18 13:01:00) [7]

Набор-то какой? это запрос или таблица.

Если таблица - проще всего:

randomize;
...
ibtable.recno:=trunc(random*(ibtable.recordcount)+1);


_dimka   (2006-05-18 12:29:00) [8]


> набор фиксированный навсегда или возможны изменения в его
> составе?

возможны изменения.


Sergey13   (2006-05-18 12:26:00) [9]

Придумать случайное условие поиска.


Desdechado   (2006-05-18 12:26:00) [10]

набор фиксированный навсегда или возможны изменения в его составе?

и для чего вообще?

а так есть UDF в стандартной поставке для работы со случайными числами


Наверх

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