Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / выбор случайной записи из таблицы / 11 сообщений из 11, страница 1 из 1
03.09.2003, 14:15
    #32254727
Van
Van
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
Господа, возник вопрос, как сделать выбор случайной записи из Access'овской таблицы.
Поля: ID | TXT | Prefix

Необходимо заполучить рандомную запись с определенным префиксом
Различных префиксов - 52, записей в базе - порядка 30000

Подскажите плз наиболее оптимальный вариант...
...
Рейтинг: 0 / 0
03.09.2003, 14:17
    #32254731
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
а если взять число rnd и умножить на общее кол-во записей в таблице.
получишь случайный номер записи.
...
Рейтинг: 0 / 0
03.09.2003, 14:53
    #32254804
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
Не... тут такой вариант с префиксом не покатит.

Но можно и по другому попробовать...
Код: plaintext
1.
2.
3.
4.
SELECT TOP  1  a.*
FROM MyTable AS a
WHERE a.ID LIKE '52%'
ORDER BY Rnd(a.ID);
...
Рейтинг: 0 / 0
04.09.2003, 11:01
    #32255562
Van
Van
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
SELECT TOP 1 message FROM smsCitates WHERE (CitPrefix="AF") ORDER BY Rnd(ID);
в общем в итоге вот такой запрос получился

НО! Когда его в Access'е его юзаешь, все нормально работает, а когда из asp-шки исполняешь запрос, то выдает ошибку: "Too few parameters. Expected 1."
Подскажите, в чем проблема....
...
Рейтинг: 0 / 0
04.09.2003, 11:07
    #32255569
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
Попробуй ШВ взять в квадратные скобки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT TOP  1  message FROM smsCitates
WHERE (CitPrefix= "AF" ) ORDER BY Rnd([ID]);

 -- Или алиас используй
 
SELECT TOP  1  a.message FROM smsCitates a
WHERE (a.CitPrefix= "AF" ) ORDER BY Rnd(a.[ID]);

 -- Или так
 
SELECT TOP  1  smsCitates.message FROM smsCitates
WHERE (smsCitates.CitPrefix= "AF" ) ORDER BY Rnd(smsCitates.[ID]);

mahoune
...
Рейтинг: 0 / 0
04.09.2003, 11:16
    #32255584
Van
Van
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
Неа, ничего не помагает.. У меня с самого начала так и было со всеми скобочками и т.п.
Такое впечатление, что оно просто не понимает, что такое rnd()
...
Рейтинг: 0 / 0
04.09.2003, 11:31
    #32255615
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
А из ASP к какой базе подключаешься?
...
Рейтинг: 0 / 0
04.09.2003, 11:48
    #32255647
Van
Van
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
ну Access'овская база...
...
Рейтинг: 0 / 0
04.09.2003, 12:46
    #32255748
Van
Van
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
Короче говоря, все заработало..
Оказывается, все дело в кавычках:

вот такой код в ASP отказывается работать:
SELECT TOP 1 smsCitates.Message
FROM smsCitates
WHERE (((smsCitates.CitPrefix)="TXT"))

а вот такой работает:
SELECT TOP 1 smsCitates.Message
FROM smsCitates
WHERE (((smsCitates.CitPrefix)='TXT'))
ORDER BY Rnd(ID);

nолько проблемка еще одна возникла - он постоянно выдает одну и ту же запись при вызове из скрипта, хотя в Access'е опять же все работает исправно и каждый раз вываливается новая запись..
У меня такие подозрения, что нужно какой-то рандомайз SQLевсий запускать, только вот как это делается???
...
Рейтинг: 0 / 0
04.09.2003, 16:37
    #32256153
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор случайной записи из таблицы
Так происходит если не указывать RND(ID)? а писать просто RND!
...
Рейтинг: 0 / 0
05.09.2003, 11:58
    #32256788
выбор случайной записи из таблицы
Вот готовый пример кода

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim rst As New ADODB.Recordset
rst.Open  "MyTable" , CurrentProject.Connection, adOpenKeyset, adLockReadOnly
If rst.RecordCount >  0  Then
    Randomize
    rst.AbsolutePosition = Int(Rnd( 1 ) * rst.RecordCount) +  1 
    ' Здесь берешь содержимое поля с позицией rst.AbsolutePosition в таблице'
End If
rst.Close
Set rst = Nothing
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / выбор случайной записи из таблицы / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]