Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор произвольной записи из таблицы, MsAccess 
:(
    Опции темы
Fedor
Дата 1.10.2004, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Собственно, как рэндомом выбрать с помощью Квери запись из таблицы (какой запрос для этого нужен)


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Kesh
Дата 2.10.2004, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: нет
Всего: 54



Код
Select First(*) from mytable
или я чего-то не понял?


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Fedor
Дата 2.10.2004, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Ну, такой запрос у меня вообще не работает.

Поясняю еще раз. В таблице есть несколько записей. Как из них случайным образом выбрать одну. (Она может быть и первой, и десятой, и сто двадцать пятой).

В принципе, решение может быть получено если бы я знал. как выбрать n-тую запись из таблицы. Причем, запись состоит только из одного поля тектсового вида (никаких индексов и номеров).
И как узнать количество всех записей в таблице.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Dimich
Дата 2.10.2004, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 25.8.2004
Где: Брянск

Репутация: нет
Всего: 7



Не знаю, как в MsAccess, а в Oracle можно узнать сколько строк в таблице так:
Код
select count(1) from mytable;
и соответственно выбрать N-ю так:
Код
select * from mytable where rownum = :N;
...может поможет.......
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
boevik
Дата 2.10.2004, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: нет
Всего: 35



Если про Access, то узнать сколько строк в таблице так:
Код
select count(*) from mytable;

А вот выбрать N-ю запись можно к примеру так:
Код
select top N * from mytable;

из рекордсета взять последнюю запись.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
LSD
Дата 2.10.2004, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538



Цитата(Dimich @ 2.10.2004, 17:02)
Не знаю, как в MsAccess, а в Oracle можно узнать сколько строк в таблице так:
Код
select count(1) from mytable;
и соответственно выбрать N-ю так:
Код
select * from mytable where rownum = :N;
...может поможет.......

Этод код работать не будет, т.к. вначале строки отбираются согласно условию и только затем они добавляются в результирующий запрос. Таким образом если мы укажем rownum = 5, то в результате получим 0 строк. Хотя такой запрос сработает: rownum < 5.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Vit
Дата 3.10.2004, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207





--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Kesh
Дата 3.10.2004, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: нет
Всего: 54



Для mySQL
Код
SELECT *
FROM `mytable`
ORDER BY RAND()
LIMIT 1



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
LSD
Дата 3.10.2004, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538



Вот такой код работает:
Код
select <columns> from (select <columns>, rownum row_num  from <tables>) where row_num = 10;



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
boevik
Дата 3.10.2004, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: нет
Всего: 35



Господа, вы не забыли что мы ведем речь об MSAccess?


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Kesh
Дата 3.10.2004, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: нет
Всего: 54



LSD Вложенный запрос для выборки одной записи... ИМХО не есть зеир гуд...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Vit
Дата 3.10.2004, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Цитата(Kesh @ 3.10.2004, 09:49)
LSD Вложенный запрос для выборки одной записи... ИМХО не есть зеир гуд...


Но и не смертельно



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
LSD
Дата 3.10.2004, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538



Цитата(Kesh @ 3.10.2004, 18:49)
LSD Вложенный запрос для выборки одной записи... ИМХО не есть зеир гуд...

Во первых, он легко модифицируется для выборки произвольного числа столбцов, достаточно лишь изменить условие, так что alles ist in Ordnung.
Во вторых, вопрос был в том:
Цитата(Morpheus @ 1.10.2004, 23:45)
как рэндомом выбрать с помощью Квери запись из таблицы (какой запрос для этого нужен)
.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
dionisiu
Дата 31.7.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 13.5.2006
Где: Крым

Репутация: 1
Всего: 2



Fedor, делай примерно так:
Код

set db=CurrentDb
set rec=db.tabledefs("SuperTable")
rec.MoveFirst
lenght=rec.RecordCount
randNum=RANDOM(lenght)+1
rec.Move randNum
'дальше делаешь со своей записью что угодно
'если надо редактировать, то
rec.Edit
' действие
'

rec.Update

'если просто прочитать
var=rec!FieldNeeded.Value

не забудь объявить базу, рекордсет, переменные, а после - закрыть и уничтожить smile  
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.