![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 05.07.2010
Сообщений: 33
|
![]()
TOP на сколько я знаю возвращает первые n записей, т.е. от 0 до n
select top '+IntToStr(Random(кол-во))+' *... from... order by id desc и этот запрос будет выдавать каждый раз разное количество записей вообще-то))) это уже тогда так писать нужно SELECT TOP 1 * FROM table ORDER BY RND(id), но тут возникает две проблемы во-первых этот запрос перебирает всю таблицу, а не только 1 запись, а во вторых нужен id опять же, а ЕГО НЕТ секрета нет, просто случайный выбор вопроса из базы, база уже готова и хоть щас там несколько сот вопросов, но будет больше |
![]() |
![]() |
![]() |
#12 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
скажете Будете проверять при вводе. Тогда не сработает вот это Цитата:
Цитата:
И придется не просто просто переписать БД. А выкинуть все нажитое и начать писать снова. Если упрямо хочется странного, то для решения задачи (чтобы не тянуть с сервера много записей) можно прикрутить вложенные запросы и разнонаправленное упорядочивание. "Ручная" имитация LIMIT. Вот только опять нужно упорядочивание которого нет. Пример давать не буду дабы не поощрять дурное проектирование. Или давайте аргументированное почему ID не выход. Да и отсутствие порядка не даст оным воспользоваться. Но вот только если в поле есть разные данные то всегда существует отношение порядка. какое?
программа — запись алгоритма на языке понятном транслятору
|
|||
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 05.07.2010
Сообщений: 33
|
![]()
наличие id от дубликатов не очень то и избавит, можно наделать кучу записей, у них у всех будет разный id, но содержание одно? а что бы от них избавиться можно проверять всё базу, например в отдельном потоке и переодически, к примеру раз в сутки, а не каждый раз при вызове функции которая выбирает вопрос. я про запрос на всю базу писал конкретно для этого случая, а не вообще, разумееться есть запросы которые полностью таблице возвращают, но есть разница сделать такой запрос 1 или 1000
|
![]() |
![]() |
![]() |
#14 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
А Если у них нет ID, то можно удалить только сразу ВСЕ.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 20.09.2012 в 19:57. |
|
![]() |
![]() |
![]() |
#15 |
Пользователь
Регистрация: 05.07.2010
Сообщений: 33
|
![]()
давайте не отходить от темы, как и что удалять я сам разберусь))
вы просто не видите не программы, не всей бызы вопрос был в другом |
![]() |
![]() |
![]() |
#16 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А если так:
SELECT * FROM table where id>=:k and (id+1)<=:k А в параметрах уже random() задавать для :k ?
I'm learning to live...
|
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
1. Без id в ACCESS не обойтись для оптимальной выборки. По id обязательно иметь индекс
2. id желательно максимально плотным и с минимумом дырок 3. Запрашиваем min и max id 4. Програмно вычислить рандомно k между min и max id 5. запрос SELECT top 1 вопрос FROM Таблица WHERE id>=:k 6. Попутно возникнет усложнение в виде необходимости избавления от повторов
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 05.07.2010
Сообщений: 33
|
![]()
мне это напоминает дискотеку на граблях
![]() говорю нету поля id все поля разные, но без индекса Последний раз редактировалось kelod; 20.09.2012 в 20:20. |
![]() |
![]() |
![]() |
#19 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
Например пока нет ответа. Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||
![]() |
![]() |
![]() |
#20 |
Пользователь
Регистрация: 05.07.2010
Сообщений: 33
|
![]()
да и потом если бы даже id и был, записи то иногда удаляют и получаются дыры и тогда эти способы не подходят все
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
поиск записей (поле со списком) | Megatron1 | Microsoft Office Access | 1 | 13.02.2012 12:06 |
Поиск в поле со списком | Glender | Microsoft Office Access | 1 | 06.02.2012 11:14 |
Не могу сделать поле поиск в 2010 | Sagdas | Microsoft Office Access | 2 | 08.12.2010 20:01 |
Поиск записи в поле со списком | Swatch | Microsoft Office Access | 1 | 23.12.2009 19:09 |
Поиск в поле Memo | omi | БД в Delphi | 6 | 01.03.2007 18:39 |