Есть таблица, скажем, 1 млн. записей, нужно из нее random выбрать 1000 записей и засунуть в другую таблицу...
Сейчас делаю это так: делаю дополнительное поле random, потом его сортирую и отбираю путем ctrl-c > ctrl-v в другую таблицу. Получается, мягко говоря, не очень удобно
Итак.... Создание, добавление, удаление таблиц и всякая чепухень - это элементарно
Как создать таблицу при таких условиях: количество записей столько-то, выбрать из этого поля рендомом (то есть установка каких-либо условий не принимается, как решение проблемы)
Здесь нужно писать маленькую процедурку или макросик - вот кто знает как .....
Вот выдержка из справочной системы MS Access (Посмотрите еще INSERT ... INTO)
Инструкция SELECT...INTO Создает запрос на создание таблицы.
Синтаксис SELECT поле_1[, поле_2[, ...]] INTO новаяТаблица [IN внешняяБазаДанных] FROM источник
Ниже перечислены аргументы инструкции SELECT...INTO:
Элемент Описание поле_1, поле_2 Имена полей, которые следует скопировать в новую таблицу. новаяТаблица Имя создаваемой таблицы. Это имя должно удовлетворять стандартным правилам именования. Если новаяТаблица совпадает с именем существующей таблицы, возникает перехватываемая ошибка. внешняяБазаДанных Путь к внешней базе данных. Более подробные сведения об этом аргументе можно найти в описании предложения IN. источник Имя существующей таблицы, из которой отбираются записи. Это может быть одна таблица, несколько таблиц или запрос.
Дополнительные сведения Запрос на создание таблицы можно использовать для архивирования записей, создания резервных копий таблицы, копий для экспорта в другую базу данных, а также в качестве основы отчета, отображающего данные за конкретный период времени. Например, можно создать отчет «Ежемесячные продажи по областям», выполняя каждый месяц один и тот же запрос на создание таблицы.
В один прием у меня никак не получается. Поробуйте вот так: 1. Создаем дополнительно поле (в примере оно будет называться RANDOM_F) в таблице с даннымы (в примере она будет называться DATA_TABLE) 2. Создаем запрос на обновление данных в таблице DATA_TABLE. Он будет звучать примерно так:
UPDATE DATA_TABLE SET DATA_TABLE.RANDOM_F = Rnd([ИМЯ_КЛЮЧЕВОГО_ПОЛЯ_ТАБЛИЦЫ_DATA_TABLE]);
После каждого запуска этого запроса поля RANDOM_F будут принимать все время разные (случайные) значения 3. Создаем запрос на выборку из таблицы DATA_TABLE:
SELECT TOP 100 ПОЛЕ1, ПОЛЕ2, ... FROM DATA_TABLE ORDER BY DATA_TABLE.RANDOM_F;
Для того, что бы получить новый набор случайных данных, необходимо запустить эту пару запросов. Сначала на обновление полей со случайным числом, а затем на выборку 100 верхних записей. Примечание: В запросе на обновление используется встроенная функция Rnd с аргументом ИМЯ_КЛЮЧЕВОГО_ПОЛЯ_ТАБЛИЦЫ_DATA_TABLE, имеется ввиду, блин, ключевое поле и имеется ввиду, например ID записи
пока вышла из ситуации похожим способом: 1) в исходной таблице добавляем поле, куда вставляем рендомом значения, 2) потом сортируем по этому рендом-полю таблицу, 3) потом смотрим значение рендом-поля на нужной записи 4) в запросе на создание таблицы ограничиваем значение рендом-поля числом, которое получили в п.3...