powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Наверное, DMax... или нет?
42 сообщений из 42, показаны все 2 страниц
Наверное, DMax... или нет?
    #32218755
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая проблемка:
нужно из таблицы взять 3 случайных записи. Естественно, чтобы он не повторялись.
вот только как это сделать, представляю ну очень приблизительно. Может, кто-то поделится мыслями по этому поводу?
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32218797
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
top 3 в селекте без сортировки - и дело с концом.
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32218833
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Top 3 в селекте без сортировки будет чаще всео выдавать одни и те же 3 записи. При отстутствии явно указанной сортировки записи сортируются по ключу (если есть), по индексам (если есть), в порядке создания (если ниаких индексов).
Так что лучше сделать Top 3 с сортировкой по функции Rnd([ЛюбоеПоле])
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32218881
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Видимо, я плохо понял про "чтобы не повторялись". Я решил, что эти 3 записи должны быть разными между собой. Если еще нужно, чтобы при следующем обращении выдались 3 других, то Лох прав (впрочем, как всегда).
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32218905
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, ты неправильно понял про случайные записи. Ну и чтоб не повторялись

Марос
Марос

Эх

Ни марось миня
Эх
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32218908
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Марос
> Марос

Лох, у тебя две записи получились одинаковыми. Мнбым?
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32218910
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, ты бы знал, сколько сраных записей у меня получились одинаковыми...
Я каждый день сдаю экзамен. И каждый день его проваливаю... (с) А.Гордон

Мнбым?
Крю?
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32218913
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Крю?

Мы нашли общий язык!!! Интересно, что мне для этого не пришлось напиваться. Наверно, я потому и не пью, что и без того такой...

Да простит меня автор вопроса...

Код: plaintext
End Offtopic
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32218918
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, это поможет\r
\r
/topic/41242\r
\r
Топик Tаrantino.
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32219147
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем огромное!
Товарищи, господа, вы все просто великолепные дядьки!
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32219152
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот только проблемка еще возникла...
я собссно, к базе через АСП обращаюсь.
и у меня все хорошо, только раз за разом возвращаются одни и те же записи - типа вроде как randomize не сделал. А где его сделать ума не приложу...
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220206
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее, выбирает он три последних записи почему-то.
Причем, совершенно не играет роли по какому полю я делаю сортировку...
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220260
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу предложить не очень изящный,но надежный способ.
1.Нумеруешь записи см. здесь
2.Находишь максимальный порядковый номер.
3.Генеришь 3 случайных числа в диапазоне 1-NNmax
4.Финальный аккорд:
select ... from ... where NN in (num1,num2,num3)
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220318
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VIG
я с этого и начал, то есть почти с этого...
Делал выборку в рекордсет, считал количество записей, 3 раза делал rnd(количество записей), так, что бы все 3 числа были разные, сортировал, потом проходил циклом по реордсету и вуаля...
Работает - планета Железяка!
а потом решил что изящнее будет брать три ГОТОВЫЕ СЛУЧАЙНЫЕ записи из запроса... да вот что-то случайность тут какая-то не случайная...
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220387
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2fundd
Код: plaintext
1.
SELECT top  3  T2.id_val , T2.v1
FROM Table2 t2 order by Int(( 6  * Rnd(t2.id_val)) +  1 );

У меня такой запрос работает!
Только вместо 6 надо использовать число ,соответствующее Мах(id_val)
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220400
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведение к инту - убрать!
Выдаст несколько одинаковых интов - и в итоге вернет не 3 записи, а больше.
Собственно без приведения - и домножать не нужно.
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220456
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Л.П,ты как всегда прав.Так тоже работает
Код: plaintext
1.
SELECT top  3  T2.id_val , T2.v1
FROM Table2 t2 order by Rnd(t2.id_val);
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220841
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я тут не догоняю:
Код: plaintext
1.
SELECT top  3  T2.id_val , T2.v1
FROM Table2 t2 order by Rnd(t2.id_val);
Почему у тебя имена полей через точку? Вообще, что есть T2 ?
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220879
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И опять же как Мах(id_val) находить? Предварительно делать выборку select *, или там select top 1 order by id_val desc - это понятно, но это опять нагромождение получается



"Хочется ведь, как скорее" (с) Киса Воробьянинов & Ильф & Петров
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220898
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты попробуй догони...
Почитай про синтаксис команды select
В данном случае Т2 это алиас (псевдоним) имени таблицы Table2
Полное имя поля имеет формат [Table_name].field_name
Представь,что твоя таблица называется Штатное_расписание_дважды_орденоносного_завода_имени_двадцати_шести_бакинских_комиссаров_невинно_убиенных_жаркой_летней_ночью
И тебе надо проджойнить ее с еще десятью подобными и выбрать из них поля с одинаковыми именами. Догнал?
Но в данном конкретном сдучае можно и так
Код: plaintext
1.
SELECT top  3  id_val , v1
FROM Table2  order by Rnd(id_val);
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220953
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это я точно не догнал :)
но то что ты прислал, я уже делал - Лох Позорный посоветовал...
и этот запрос возвращает 3 последние записи.
То есть в Аксессе все работает правильно!
А вот если беру из АСП - такая хрень вылазит.
Баннеры на страничке должны меняться - а они, заразы на месте стоят...
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220959
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не трудно ,покажи как твой запрос в ASP выглядит?
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220969
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эээ гражданина ты туда не ходи ты сюда ходи а то башка снег попадет совсем дохлый будешь
ASP не знаю, так что извиняй если что, но
Как у тебя в asp работает вызов функции RND??? Я понимаю, что там тоже VB, но меня терзают смутные сомненья. Попробуй просто для всех записей выведи Rnd(id_val) куда-нибудь
З.Ы. Если мне не изменяет мой склероз ((с) Саныч) кто-то недавно жаловался на работу рнд именно в асп. Утверждалось, что оно выдает на выбор 4 числа
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32220982
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тут\r
Пост АлексейК от 23 июл 03, 16:44
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221093
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На форуме SQL прелагали сортировать GUID. Самое что ни наесть уникальное значение (в пределах планеты, правда). Издержки: лишнии 16 байт на каждую запись.
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221104
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Издержки: лишнии 16 байт на каждую запись.
Не-а..
Хранить не нужно. Нужно каждый раз новый получать. Для того чтобы каждый раз другие (случайные) записи выбирать.
Только эта... Нужно ведь не уникальность , а случайность . Гуид как то слабо случаен. Сгенери несколько подряд и увидишь.
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221150
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ЛП

>Только эта... Нужно ведь не уникальность, а случайность. Гуид как то слабо случаен. Сгенери несколько подряд и увидишь

Сгенерил в MS SQL. Не похожи .
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
declare @i int
set @i= 1 
	while @i< 100 
	begin
		print NEWID ()
		set @i=@i+ 1 
	end


И в продолжении темы: RND так же не случайный, а псевдо-случайный. Наверное его алгоритм "случайности" по-хуже GUID будет. Ведь опирается (насколько я зная в основном на таймер), а GUID еще на кучу инфы (МАК-адрес сетевухи, например). ИМХО.
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221165
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно. Я в vb через api гуиды получал - оч похожи выходило.

а GUID еще на кучу инфы (МАК-адрес сетевухи, например).
А толку-то? Мак-адрес сетевухи вроде как не меняется. Если все хорошо.
Так же на время и завязано.

В общем, если в асп генерация гуидов дает более случайный результат чем рнд - то так и пропишем. В аксесе наоборот.
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221174
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Л.П
Код: plaintext
1.
2.
SELECT *
FROM Northwind..Orders 
ORDER BY NEWID()
Порядок записей-случайнее некуда
ЗЫ Позаимствовано отсюда
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221177
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ЛП
>Странно. Я в vb через api гуиды получал - оч похожи выходило.

Дай примерчик. Как-то мучился этим вопросом - не нашел
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221185
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит кодик в запросе такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
strConnectionString =  "Provider=Microsoft.Jet.OLEDB.4 . 0 ;Data Source=d:\dbase\db1.mdb"
Set cnn = Server.CreateObject( "ADODB.Connection" )
cnn.Open strConnectionString
Set rstuhi = Server.CreateObject( "ADODB.Recordset" )
struhi =  "SELECT * FROM 3uhi" 
rstuhi.Open struhi, cnn
dim pth( 3 )
dim rvw( 3 )
i= 1 
do until rstuhi.eof 
pth(i)=rstuhi( "Путь" )
rvw(i)=rstuhi( "Ссылка" )
rstuhi.movenext
i=i+ 1 
loop
rstuhi.close
Потом pth и rvw используются как адрес картинки и адрес ссылки.
а запрос 3uhi - так и вообще прост:
Код: plaintext
1.
2.
SELECT TOP  3  ушки.id, ушки.путь, ушки.обзор
FROM ушки
ORDER BY rnd([id]);
(VIG - я тут правда стормозил, чесс слово..)
И вот тут то все и обламывается.
Причем если в Акссессе этот запрос открывать закрывать, то записи каждый раз разные получаются. А вот на сайт - одни и те же дергает, козлина неприятная....
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221207
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по поводу NEWID() - классная штука. Тока у меня же .mdb...
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221230
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А по поводу NEWID() - классная штука. Тока у меня же .mdb...

вот и создай свою функцию, внутри которой будет сидеть генератор GUID'ов (или RND или еще еще что-нибудь).

==
Лох, ау!!! Дай примерчик-то :)
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221254
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох, ау!!! Дай примерчик-то :)
Да нету его сейчас под рукой, а по памяти не помню. Дай до хаты доползти.
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221261
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 funddd
"Что я еще могу сказать..." (А.С. Пушкин)
Посмотри что возвращаетcя в поле RndTest запросом
Код: plaintext
1.
2.
SELECT  ушки.id, ушки.путь, ушки.обзор,rnd([id]) as RndTest
FROM ушки
ORDER BY rnd([id]);

Может действительно в VBScript rnd() глючит?
Попробуй еще перед исполнением запроса поставить Randomize
PS.Ох уж эти русские буквы в названиях...
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221313
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor ,посмотри здесь,может подойдет\r
/topic/1390
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221323
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VIG
Огромное спасибо. Оно.
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221333
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только странно функция GUIDFromString не может создать ActivX объект(429 ошибка).
Я этой функцией первый раз в жизни пользуюсь, разве так и должно быть? :)
А ошибка хорошо знакома - при работе с екцелем часто такая хрень происходит. Но причем тут Объект и функция GUIDFromString ? Она что пытаеться новый объект access application создать?
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221365
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor,обрати внимание из какой это библиотеки-OLE32.DLL
поэтому и ошибки одинаковы (ActiveX-это тоже оле обьект)
Больше ничего сказать не могу,так как тоже раньше с этими функциями не работал.Если разберусь-сообщу
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221393
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor,проверил сейчас пример №2- у меня работает:
{7B0341E9-41D6-4A6C-9C78-290B894CBF13}
{7EB8409C-E0E8-4E55-ADE9-08501E4FE65F}
-то что я получил
Проверь подключена ли у тебя Ole Automation?
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221653
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ужжж.... Оно, конечно, так наверняка работать будет...
только тот способ от которого мне хочется отказаться из-за громоздкости, будет xqnm больше похож на бабочку.... там все таки только 7 строчек кода... Но огромное спасибо всем, кто откликнулся!!!
...
Рейтинг: 0 / 0
Наверное, DMax... или нет?
    #32221715
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VIG
>проверил сейчас пример №2- у меня работает:

GetGUID -работает и возвращает GUID (750A270CE2D84F5D9F4DDA4E64568409)
GUIDFromString (GetGUID) (GUIDFromString ("750A270CE2D84F5D9F4DDA4E64568409") - не работает. Ole Automation есть в ссылках, но это роли играть не должно.
==
Блин,GUIDFromString(" {7EB8409C-E0E8-4E55-ADE9-08501E4FE65F}") - работает
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Наверное, DMax... или нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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