|
|
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Есть такая проблемка: нужно из таблицы взять 3 случайных записи. Естественно, чтобы он не повторялись. вот только как это сделать, представляю ну очень приблизительно. Может, кто-то поделится мыслями по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 09:01 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
top 3 в селекте без сортировки - и дело с концом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 12:09 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Top 3 в селекте без сортировки будет чаще всео выдавать одни и те же 3 записи. При отстутствии явно указанной сортировки записи сортируются по ключу (если есть), по индексам (если есть), в порядке создания (если ниаких индексов). Так что лучше сделать Top 3 с сортировкой по функции Rnd([ЛюбоеПоле]) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 15:13 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Видимо, я плохо понял про "чтобы не повторялись". Я решил, что эти 3 записи должны быть разными между собой. Если еще нужно, чтобы при следующем обращении выдались 3 других, то Лох прав (впрочем, как всегда). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 19:29 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Саныч, ты неправильно понял про случайные записи. Ну и чтоб не повторялись Марос Марос Эх Ни марось миня Эх ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 22:52 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
> Марос > Марос Лох, у тебя две записи получились одинаковыми. Мнбым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 23:00 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Саныч, ты бы знал, сколько сраных записей у меня получились одинаковыми... Я каждый день сдаю экзамен. И каждый день его проваливаю... (с) А.Гордон Мнбым? Крю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 23:06 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
> Крю? Мы нашли общий язык!!! Интересно, что мне для этого не пришлось напиваться. Наверно, я потому и не пью, что и без того такой... Да простит меня автор вопроса... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 23:18 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Возможно, это поможет\r \r /topic/41242\r \r Топик Tаrantino. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 23:57 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Спасибо всем огромное! Товарищи, господа, вы все просто великолепные дядьки! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2003, 06:22 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Вот только проблемка еще возникла... я собссно, к базе через АСП обращаюсь. и у меня все хорошо, только раз за разом возвращаются одни и те же записи - типа вроде как randomize не сделал. А где его сделать ума не приложу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2003, 07:23 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Точнее, выбирает он три последних записи почему-то. Причем, совершенно не играет роли по какому полю я делаю сортировку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 10:05 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Могу предложить не очень изящный,но надежный способ. 1.Нумеруешь записи см. здесь 2.Находишь максимальный порядковый номер. 3.Генеришь 3 случайных числа в диапазоне 1-NNmax 4.Финальный аккорд: select ... from ... where NN in (num1,num2,num3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 10:40 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
2VIG я с этого и начал, то есть почти с этого... Делал выборку в рекордсет, считал количество записей, 3 раза делал rnd(количество записей), так, что бы все 3 числа были разные, сортировал, потом проходил циклом по реордсету и вуаля... Работает - планета Железяка! а потом решил что изящнее будет брать три ГОТОВЫЕ СЛУЧАЙНЫЕ записи из запроса... да вот что-то случайность тут какая-то не случайная... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 11:15 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
2fundd Код: plaintext 1. У меня такой запрос работает! Только вместо 6 надо использовать число ,соответствующее Мах(id_val) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 11:47 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Приведение к инту - убрать! Выдаст несколько одинаковых интов - и в итоге вернет не 3 записи, а больше. Собственно без приведения - и домножать не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 11:53 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Л.П,ты как всегда прав.Так тоже работает Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 12:16 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Что-то я тут не догоняю: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 14:20 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
И опять же как Мах(id_val) находить? Предварительно делать выборку select *, или там select top 1 order by id_val desc - это понятно, но это опять нагромождение получается "Хочется ведь, как скорее" (с) Киса Воробьянинов & Ильф & Петров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 14:34 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
А ты попробуй догони... Почитай про синтаксис команды select В данном случае Т2 это алиас (псевдоним) имени таблицы Table2 Полное имя поля имеет формат [Table_name].field_name Представь,что твоя таблица называется Штатное_расписание_дважды_орденоносного_завода_имени_двадцати_шести_бакинских_комиссаров_невинно_убиенных_жаркой_летней_ночью И тебе надо проджойнить ее с еще десятью подобными и выбрать из них поля с одинаковыми именами. Догнал? Но в данном конкретном сдучае можно и так Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 14:44 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Это я точно не догнал :) но то что ты прислал, я уже делал - Лох Позорный посоветовал... и этот запрос возвращает 3 последние записи. То есть в Аксессе все работает правильно! А вот если беру из АСП - такая хрень вылазит. Баннеры на страничке должны меняться - а они, заразы на месте стоят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 15:08 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Если не трудно ,покажи как твой запрос в ASP выглядит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 15:11 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
эээ гражданина ты туда не ходи ты сюда ходи а то башка снег попадет совсем дохлый будешь ASP не знаю, так что извиняй если что, но Как у тебя в asp работает вызов функции RND??? Я понимаю, что там тоже VB, но меня терзают смутные сомненья. Попробуй просто для всех записей выведи Rnd(id_val) куда-нибудь З.Ы. Если мне не изменяет мой склероз ((с) Саныч) кто-то недавно жаловался на работу рнд именно в асп. Утверждалось, что оно выдает на выбор 4 числа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 15:15 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
вот тут\r Пост АлексейК от 23 июл 03, 16:44 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 15:19 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
На форуме SQL прелагали сортировать GUID. Самое что ни наесть уникальное значение (в пределах планеты, правда). Издержки: лишнии 16 байт на каждую запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 16:13 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Издержки: лишнии 16 байт на каждую запись. Не-а.. Хранить не нужно. Нужно каждый раз новый получать. Для того чтобы каждый раз другие (случайные) записи выбирать. Только эта... Нужно ведь не уникальность , а случайность . Гуид как то слабо случаен. Сгенери несколько подряд и увидишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 16:19 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
2ЛП >Только эта... Нужно ведь не уникальность, а случайность. Гуид как то слабо случаен. Сгенери несколько подряд и увидишь Сгенерил в MS SQL. Не похожи . Код: plaintext 1. 2. 3. 4. 5. 6. 7. И в продолжении темы: RND так же не случайный, а псевдо-случайный. Наверное его алгоритм "случайности" по-хуже GUID будет. Ведь опирается (насколько я зная в основном на таймер), а GUID еще на кучу инфы (МАК-адрес сетевухи, например). ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 16:38 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Странно. Я в vb через api гуиды получал - оч похожи выходило. а GUID еще на кучу инфы (МАК-адрес сетевухи, например). А толку-то? Мак-адрес сетевухи вроде как не меняется. Если все хорошо. Так же на время и завязано. В общем, если в асп генерация гуидов дает более случайный результат чем рнд - то так и пропишем. В аксесе наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 16:44 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
2 Л.П Код: plaintext 1. 2. ЗЫ Позаимствовано отсюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 16:48 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
2ЛП >Странно. Я в vb через api гуиды получал - оч похожи выходило. Дай примерчик. Как-то мучился этим вопросом - не нашел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 16:51 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Значит кодик в запросе такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. а запрос 3uhi - так и вообще прост: Код: plaintext 1. 2. И вот тут то все и обламывается. Причем если в Акссессе этот запрос открывать закрывать, то записи каждый раз разные получаются. А вот на сайт - одни и те же дергает, козлина неприятная.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 16:53 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
А по поводу NEWID() - классная штука. Тока у меня же .mdb... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 17:02 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
>А по поводу NEWID() - классная штука. Тока у меня же .mdb... вот и создай свою функцию, внутри которой будет сидеть генератор GUID'ов (или RND или еще еще что-нибудь). == Лох, ау!!! Дай примерчик-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 17:14 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Лох, ау!!! Дай примерчик-то :) Да нету его сейчас под рукой, а по памяти не помню. Дай до хаты доползти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 17:22 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
2 funddd "Что я еще могу сказать..." (А.С. Пушкин) Посмотри что возвращаетcя в поле RndTest запросом Код: plaintext 1. 2. Может действительно в VBScript rnd() глючит? Попробуй еще перед исполнением запроса поставить Randomize PS.Ох уж эти русские буквы в названиях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 17:26 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Viktor ,посмотри здесь,может подойдет\r /topic/1390 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 17:47 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
2VIG Огромное спасибо. Оно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 17:51 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Только странно функция GUIDFromString не может создать ActivX объект(429 ошибка). Я этой функцией первый раз в жизни пользуюсь, разве так и должно быть? :) А ошибка хорошо знакома - при работе с екцелем часто такая хрень происходит. Но причем тут Объект и функция GUIDFromString ? Она что пытаеться новый объект access application создать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 17:57 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Viktor,обрати внимание из какой это библиотеки-OLE32.DLL поэтому и ошибки одинаковы (ActiveX-это тоже оле обьект) Больше ничего сказать не могу,так как тоже раньше с этими функциями не работал.Если разберусь-сообщу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 18:10 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Viktor,проверил сейчас пример №2- у меня работает: {7B0341E9-41D6-4A6C-9C78-290B894CBF13} {7EB8409C-E0E8-4E55-ADE9-08501E4FE65F} -то что я получил Проверь подключена ли у тебя Ole Automation? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 18:23 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
Да ужжж.... Оно, конечно, так наверняка работать будет... только тот способ от которого мне хочется отказаться из-за громоздкости, будет xqnm больше похож на бабочку.... там все таки только 7 строчек кода... Но огромное спасибо всем, кто откликнулся!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 06:28 |
|
||
|
Наверное, DMax... или нет?
|
|||
|---|---|---|---|
|
#18+
2VIG >проверил сейчас пример №2- у меня работает: GetGUID -работает и возвращает GUID (750A270CE2D84F5D9F4DDA4E64568409) GUIDFromString (GetGUID) (GUIDFromString ("750A270CE2D84F5D9F4DDA4E64568409") - не работает. Ole Automation есть в ссылках, но это роли играть не должно. == Блин,GUIDFromString(" {7EB8409C-E0E8-4E55-ADE9-08501E4FE65F}") - работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 09:12 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1680229]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
105ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 426ms |

| 0 / 0 |
