Форум: "Базы";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Вниз
Update DBF Найти похожие ветки
← →
Wild © (2004-03-02 12:55) [0]Мастерам привет от чайников! :)
У меня опять накопились вопросы, может быть кто-нибудь поможет...
1. Можно ли с помощью sql-запроса поменять формат полей в существующей dbf-таблице? Например укоротить строковое поле, преобразовать строковое в дату и т.п.
2. У меня есть запросик на апдэйт, и ошибок я в нем найти не могу, а он не работает.
update pricemod_1 pm
set pm.tovar = (select p.tovar from price p
where (p.code_tovar = pm.code_tovar)),
pm.proiz = (select p.proiz from price p
where (p.code_tovar = pm.code_tovar))
where exists (select p.code_tovar, tovar, proiz from price p
where (p.code_tovar = pm.code_tovar) and
((p.tovar <> pm.tovar) or (p.proiz <> pm.proiz)))
Записей в обновляемой таблице около 14000, во второй около 25000. Мошт у меня просто комп вешаеца? То есть ошибок не говорит никаких, но за несколько часов (по словам очевидцев) запрос не заканчивается и комп к харду обращаться продолжает периодически... :)
3. Правильно ли я понимаю алгоритм действия такого запроса:
он сначала выбирает из pm строку соответственно разделу where, потом из p ищет данные по товару соответственно подзапросу, потом то же самое по производителю, и так для каждой строки pm?
Это ж тада получаеца несколько сот миллионов операций - мошт в этом проблема?
Заранее спасибо всем!
← →
Alex_Bredin © (2004-03-02 13:20) [1]1. можно. ALTER TABLE -см в хелп
2. в 5-й строке лучше поставить префиксы таблицы для полей.
3. создать индексы для полей связи.
← →
Alex_Bredin © (2004-03-02 13:21) [2]
> 2. в 5-й строке лучше поставить префиксы таблицы для полей.
пардон, в 6-й
← →
Alex_Bredin © (2004-03-02 13:24) [3]и кстати в Вашем случае получается несколько сот миллиардов операций , тк.к у Вас тройной вложенный Select, да еще с квантором EXISTS
← →
Wild © (2004-03-04 10:06) [4]2,3. Префиксы есть, индексы тоже - результата нету :(
1. Насчет Alter Table не совсем понял. Там можно удалить столбец или добавить, а вот можно ли преобразовать...
It is possible to delete and add a column of the same name in the same ALTER TABLE statement, however any data in the column is lost in the process. This allows quick redefinition of columns while still in the database design stages.
Что-то мне подсказывает, что все данные при этом успешно пропипаются.
З.Ы. Просто я никогда не учил английский язык :)))
← →
LaidBack (2004-03-04 11:37) [5]Поищи компонент TDbCheck - он все эти проблемы решает при помощи DbiDoRestructure. Бесплатный и с исходниками.
← →
LazyCamel (2004-03-04 13:47) [6]<quote>1. Насчет Alter Table не совсем понял. Там можно удалить столбец или добавить, а вот можно ли преобразовать... </quote>
А модификация столбца это и есть последовательное удаление и создание. О данных нужно заботится отдельно. (Или воспользоваться каким-либо средством визуального проектирования, которые это умеют делать сами)
← →
VAleksey © (2004-03-04 14:34) [7]Запрос в корзину - однозначно.
← →
max1000 (2004-03-05 12:19) [8]Попробуй так
update pricemod_1 pm
set pm.tovar =(select p.tovar from price p,pricemod_1 pm where (p.code_tovar = pm.code_tovar)),
pm.proiz = (select p.proiz from price p,pricemod_1 pm where (p.code_tovar = pm.code_tovar))
where exists (select p.code_tovar, pm.tovar,pm.proiz from price p,pricemod_1 pm where (p.code_tovar = pm.code_tovar) and
((p.tovar <> pm.tovar) or (p.proiz <> pm.proiz)))
← →
Wild © (2004-03-05 12:26) [9][7] Конструктивное предложение... :)
[8] Пока не пробовал, но в суть не въехал :)
Придется, наверное, от дбф-а отказываться...
← →
max1000 (2004-03-05 12:34) [10]И правильно берешь InterBase6.5 , Firebird, EMS InterBase Manager и вперед
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c