![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
выборка случайных неповтоярющихся значиений из базы данных [D7, Access]
Flok © (2007-12-12 09:08:00)Добрый день уважаемые мастера
У меня возник интресный вопрос ..
может кто поделиться своими соображаниями ?
Есть база ACCESS ней 100 записей , из них 50 соотвествуют определнным условиям.Работа ведеться через ADO . Запросы выполняет ADOQuery .
Как модифицировать текст запроса что бы он выбирал только 10 случайных , не повторяющихся записей (а условию отбора соответсввует 50 вопросов ) .
Заранее спасибо ..
sniknik (2007-12-12 11:24:00) [21]> он уже захотел просто запросом все сразу готовое получать
это возможно. и кстати, довольно элементарно.
> tO sniknik НеТ ОШИБКА НЕ В 17 строке а пишет .. неверно указаны параметры ...(недостаточное количесво )
а в чем же еще? семнадцатая и есть.
flok (2007-12-12 11:16:00) [22]tO sniknik НеТ ОШИБКА НЕ В 17 строке а пишет .. неверно указаны параметры ...(недостаточное количесво )
да вы правильно понимаете 10 из 50 , причем в этих 10 нет одинаковых
Sergey13 (2007-12-12 11:15:00) [23]> [14] sniknik © (12.12.07 10:53)
> а можно ее мне?
Я не против.
> правда в вопросе отличие там случайные записи из выборки имеются ввиду
Но в
> [8] Flok (12.12.07 10:14)
он уже захотел просто запросом все сразу готовое получать
Сергей М. (2007-12-12 11:03:00) [24]
> Jet поддерживает практически все из VBA
Может быть. Возражать не буду, ибо никогда не интересовался всеми возможностями jet
sniknik (2007-12-12 10:59:00) [25]+ дополнение
"не повторяющихся записей" в вопросе ([0]) я воспринимаю как, неповторяющиеся 10-ть из 50-и (/n) возможны.
"неповторяющиеся случайности" это уже вариант когда первое множество 10-и случайных не пересекаются со вторым из 10-и и т.д. пока все 50-т(/n) не кончатся.
sniknik (2007-12-12 10:53:00) [26]> в инете сть инфа про опретор rnd но заставить его работать .. я не смог
наверное изза ошибки в 17й строке?
> Этот оператор имеет отношение только к MSAccess VBA.
Jet поддерживает практически все из VBA (естественно диалоговые функции не имеются ввиду).
> можно и нобелевку огрести.
а можно ее мне? правда в вопросе отличие там случайные записи из выборки имеются ввиду (что возможно), а ты почемуто о "неповторяющихся случайностях" начал говорить... (без сохранения результатов предыдущих невозможно, или не будут случайными).
Сергей М. (2007-12-12 10:46:00) [27]
> Flok (12.12.07 10:29) [11]
Тогда наиболее простое и эффективное решение тебе уже предложено в [9]
И одним-единственным запросом в описанных тобой условиях не обойтись.
Sergey13 (2007-12-12 10:33:00) [28]> [8] Flok (12.12.07 10:14)
> а мне же интресно модифицировать запрос чтобы получить иненно
> сразу список случайных вопросов
Я конечто далеко не математик, но, мне кажется, если ты сможешь вывести закон получения неповторяющихся случайностей из произвольного множества, который можно уложить в компьютерный алгоритм, можно и нобелевку огрести.
Flok (2007-12-12 10:29:00) [29]Сергей М.
Это сейчас всего 50 а в последствии может быть и 100 и 1000 ..
здесь важно , принципиально важно именно модифицировать запрос
Сергей М. (2007-12-12 10:18:00) [30]
> Flok (12.12.07 10:14) [8]
Ради всего 10-ти записей из всего 50-ти возможных можно и не менять текущую схему
Johnmen (2007-12-12 10:17:00) [31]
> ну я так и сделал юю отобрал все ...генерирую случайный
> номер и ищу егов базе но ..это долго и не эффективно
Ничего подобного. Ты делаешь не так, как я говорил.
Повторю.
Запросом отбирается всё множество идентификаторов, из которых предполагается выбирать случайные неповторяющиеся.
Эти значения имеют порядковый номер в локальном НД. Генерятся случайные числа из диапазона пор.номеров в необходимом количестве. Попутно проверяется неповторяемость сгенеренных номеров.
Запросом отбираются записи с идентификаторами, соответствующими полученным номерам.
Flok (2007-12-12 10:14:00) [32]сейчас работа ведеться так ..
выбираеться список вопросов ..
загонятеться в датасет
генерируються случайные значения номнера записи в дата сете .. загоняються в массив проверка идет на е совпадения а потом уже едет поик в таблице .. по сохранему значению номера в базе .. прочитанного из номеров сгенерированных значений ...
а мне же интресно модифицировать запрос чтобы получить иненно сразу список случайных вопросов
Сергей М. (2007-12-12 10:12:00) [33]
> в инете сть инфа про опретор rnd
Этот оператор имеет отношение только к MSAccess VBA.
> сначала надо отобрать все впросы
Если в таблице поле перв.ключа содержит заранее известный набор значений (например, записи в этом поле последовательно пронумерованы от 1 до 100), то нет необходимости тянуть на сторону клиента все записи.
Sergey13 (2007-12-12 10:06:00) [34]> [5] Flok (12.12.07 10:00)
> генерирую случайный номер и ищу егов базе но ..
> это долго и не эффективно
В этом случае наверное стоит работать просто с порядковым номером записи в датасете, а не с идентификатором таблицы.
Кроме того желательно сохранять выбранные ранее номера, что бы не повторять их.
Flok (2007-12-12 10:00:00) [35]>>Johnmen © (12.12.07 09:52) [4]
Отбираешь ВСЕ вопросы, из их номеров выбираешь случайные, запрашиваешь эти выбранные.
ну я так и сделал юю отобрал все ...
генерирую случайный номер и ищу егов базе но ..
это долго и не эффективно
сначала надо отобрать все впросы ..
потом сгенерировать случайные значения проветить чтобы они не повторялись ..
а ведь наврняка в запросе можноь выбирать случайные вопросы
в инете сть инфа про опретор rnd но заставить его работать .. я не смог
Johnmen (2007-12-12 09:52:00) [36]Отбираешь ВСЕ вопросы, из их номеров выбираешь случайные, запрашиваешь эти выбранные.
Flok (2007-12-12 09:50:00) [37]to Johnmen
это база вопросов
есть поле уникальное Номер вопроса в базе
и поле раздел
допустим надо отобрать 5 случайных вопросов 3 го раздела ..
2 вопроса 4 го раздела и так далее ...
тоесть просто сгенировать 10 номер вопросоов а потом из выбрать в базе не получиться
to Sergey13 - работа локальная
ну вообще чем меньше повторений тем лучше ..
Sergey13 (2007-12-12 09:12:00) [38]> [0] Flok (12.12.07 09:08)
> не повторяющихся записей
Никогда не повторяющихся?
Работа локальная?
Johnmen (2007-12-12 09:11:00) [39]Сгенерить 10 случайных значений уникального идентификатора и отобрать записи, им соответствующие.