Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL в FoxPro и встроенный язык FoxPro, День и ночь в смысле быстродействия 
:(
    Опции темы
Royan
Дата 7.5.2004, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


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

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



Всем привет!

Использую VFP 8.0 и пытаюсь добится следующего:

Есть таблица (orders) в ней ~1000 записей. Некоторые из них повторяются, мне один раз надо от них избавиться (то есть никакой оптимизации в моих действиях не требуется), искать дубликаты я решил по полю cust_id так как оно в идеале должно быть уникальным. Вот что я придумал:
Код
OPEN DATABASE 'path\todbfile\db.dbf'
SELECT order.cust_id FROM order INTO ARRAY res

arrlen= ALEN(res, 1)

FOR i=1 TO arrlen STEP 1
 FOR j=1 TO arrlen STEP 1
   IF res[i]==res[j] AND i<>j
     && сохраняем значение индекса
     LOOP
   ENDIF
 ENDFOR
ENDFOR


Далее мысль остановилась так как возникли вопросы

1) Цикл FOR в 1000 итераций выполнялся на P4 2,4 GHz и 512 Mb.... столько мне не прожить поэтому я убил процесс vfp8.exe

2) Если преодолеть проблему 1 то как использовать эту информацию в запросе DELETE?

Вобщем очень надеюсь на то, что знающие люди не ушли в отпуск ибо все таки весна.

PS Еще один вопрос не относящийся прямо к этой теме: каким образом получить доступ к элементу массива. Пока я отлаживал свой код в отладчике FoxPro, я обнаружил, что ему будто по барабану использую я res[i] или res[i,j]. Видимо я еще не въехал в философию FoxPro, но за что отвечает вторая цифра в квадратных скобках, в отладчике она всегда была равна 1, т.е.

res[1,1]=='CUSTID1'
res[2,1]=='CUSTID2'
res[3,1]=='CUSTID3'
res[4,1]=='CUSTID4'


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Cashey
Дата 7.5.2004, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Код
SELECT DISTINCT(*);
FROM <Path>\order INTO TABLE <Path>\order2.dbf


В дальнейшем можно удалить первую таблицу и в нее переименовать вторую

Это сообщение отредактировал(а) Cashey - 7.5.2004, 15:19


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

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

1. Публиковать ссылки для чисто рекламных целей.

2. Оффтопить, флеймить, говорить не культурно.

Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему.

Задавайте вопросы правильно - как спросите, так вам и ответят.

Разрешено!

Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил.

Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы.

P.S. Размещение рекламы будет строго наказываться!



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

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


 




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


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

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