Страница 1 из 1
					
				Выборка записей случайным образом
				Добавлено: 29 дек 2016, 09:57
				 romir
				Подскажите, пожалуйста, как выбрать случайным образом 100 записей (точечных объектов)  из таблицы?
			 
			
					
				Re: Выборка записей случайным образом
				Добавлено: 29 дек 2016, 10:58
				 Игорь Белов
				Один из способов:
- в окне MapBasic ввести команду Randomize
- изменить структуру таблицы: добавить колонку Rand типа Float
- заполнить колонку Rand значениями rnd(1)
- сделать выборку с сортировкой по полю Rand
- сохранить копию выборки в новую таблицу
- открыть новую таблицу
- сделать выборку из новой таблицы по условию RowID <= 100
 
			
					
				Re: Выборка записей случайным образом
				Добавлено: 29 дек 2016, 12:01
				 romir
				А через запрос как-нибудь можно?
			 
			
					
				Re: Выборка записей случайным образом
				Добавлено: 29 дек 2016, 15:00
				 romir
				Спасибо. Все работает и желаемое достигается 

 
			
					
				Re: Выборка записей случайным образом
				Добавлено: 29 дек 2016, 20:38
				 Boris
				romir писал(а):А через запрос как-нибудь можно?
можно, но только через ДВА:
Код: Выделить всё
Select CAD_NUM,rnd(1)*1000 from KU_5033 order by 2 into Q001
Browse * From Q001
Select * from Q001 where rowid<=100 into Q002
Browse * From Q002
или, если данных много и можно предположить, что функция Rnd(1) даст равномерное распределение, то одним запросом можно получить приблизительно 100 записей:
Код: Выделить всё
Select CAD_NUM from KU_5033 where rnd(1)<(100/int(TableInfo("KU_5033",8))) into Q001
Browse * From Q001
На 85000 записей выборка дала от 99 до 103 записей.
 
			
					
				Re: Выборка записей случайным образом
				Добавлено: 30 дек 2016, 09:14
				 romir
				Спасибо!