Как выбрать (без критериев) из 100 записей только несколько

ежик
Дата: 05.06.2004 12:24:44
сложно в название темы все объяснить Есть база данных вопросов для тестов. Пользователь может задать сколько он вопросов для теста хочет отобрать (например 10). Т.е. понятно что отбираю вопросы по нужной ему теме, по уровню, но вот как их этого количество (например 100) просто взять 10 ЛЮБЫХ да еще что бы они рандомально отбирались? помогите.
marvel
Дата: 05.06.2004 12:29:38
Если у этих вопросов есть ID , то генератор случайных чисел тебе поможет.
ежик
Дата: 05.06.2004 14:32:29
ID есть, но проблема в том, что когда я отобрала эти вопросы по другим критерием (тема теста,сложность), то у них теперь ID идут не безпрерывно, например выпали вопросы с ID 3, 4, 8, 10, 30, 34, 40, 58 и т.д А мне теперь надо отобрать 5 вопросов. Как? У меня была мысль, что может в Запросе можно добавлять поле типа автонумерация, но я такой опции не нашла.
А если уж говорить о генераторе случайных чисел то как избежать дублежа впросов?
Roma R
Дата: 05.06.2004 15:28:38
Автонумерация в запросе
http://am.rusimport.ru/MsAccess/topic.aspx?ID=87
schakh
Дата: 05.06.2004 16:06:52
select top 5  table.chtoNado from table1 where table.id in(Podzapros.ID)  order by rnd(table.id)
ежик
Дата: 05.06.2004 16:39:13
schakh
Я честно с ACCESS совсем недавно работаю, по этому не судите строго за глупые вопросы, но все эти селекты куда я дожна помещать? в код VB?
и Podzapros.id это как понять?
marvel
Дата: 05.06.2004 16:40:35
А зачем программировать в Access. Есть база подключись средствами Delphi, VB. А там уже можно делать что хочешь.

Написано на VB.
В List1 записывается что то из запроса (твои вопросы)
В List2 всё нумеруется в арифметическое прогрессии.
А далее дело техники...

For j = 0 To rs.RecordCount - 1
Set db = DAO.OpenDatabase(frmMain.dbname)
sSQL = "SELECT * FROM Orders WHERE ID=" & List1.List(j) & ";"
Set rs = db.OpenRecordset(sSQL)
rs.Edit
rs.Fields(0) = List2.List(j)
rs.Update
Next j
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
schakh
Дата: 05.06.2004 16:45:27
ежик
ID есть, но проблема в том, что когда я отобрала эти вопросы по другим критерием (тема теста,сложность), то у них теперь ID идут не безпрерывно, например выпали вопросы с ID 3, 4, 8, 10, 30, 34, 40, 58


Отобрали вы это запросом, если я правильно понял. Вот и используйте этот запрос как подзапрос, а выбираете оттуда, но только ID. Его результатом будет множество ID отобранных по вашим критериям. Условие order by rnd(table.id) перемешает эти ID, А Select Top 5 Вернет 5 из вашего множества ID. Запускать... это просто SQL запрос, как вашей душе угодно... хоть в VB (что в вашем случае если я правильно понимаю - вариант наиболее подходящий, хоть просто сохраните как запрос)

Если я слишком замороченно объяснил, киньте свой запрос, я на нем напишу выбор случайных 5
schakh
Дата: 05.06.2004 16:50:49
marvel
А зачем программировать в Access. Есть база подключись средствами Delphi, VB. А там уже можно делать что хочешь.


А зачем не программировать в Access???
marvel
Дата: 05.06.2004 16:53:46
>А если уж говорить о генераторе случайных чисел то как избежать дублежа впросов?

После того как вопрос выбран, он исключается из списка предлагаемях вопросов