Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
ВнизМожно ли обойтись одним запросом ... Найти похожие ветки
← →
Andrey V. (2003-04-01 09:04) [0]В базе :
наименование | Кол.
===================
СТУЛ 10
СТУЛ 1
ДИВАН 12
ДИВАН 2
СТУЛ 4
надо получить(точнее не получить , а
удалить дубликаты , с исправлением поля "Кол.") :
наименование | Кол.
===================
СТУЛ 15
ДИВАН 14
Как бы это покрасивей сделать ?
← →
Апач (2003-04-01 09:08) [1]Индекс по наименованию делай и в цикле обрабатывай по условию если наимен тек совпадает с наим предыд то удалить запись а количество перебрось вверх
← →
Arhelon (2003-04-01 09:11) [2]select name,sum(kol) from table
group by name
И всё :)
rtfm
← →
Жук (2003-04-01 09:16) [3]Одним запросом не получится. Пишите ХП.
← →
Arhelon (2003-04-01 09:19) [4]2Жук
Сам то понял что сказал????
← →
zacho (2003-04-01 09:22) [5]
> Arhelon © (01.04.03 09:19)
Жук прав.
" удалить дубликаты , с исправлением поля "Кол." - одним запросом никак не получится
← →
Жук (2003-04-01 09:22) [6]2 Arhelon
Автору нужно сделать update и delete в одном запросе. А ваш вариант только отбирает данные.
← →
Andrey V. (2003-04-01 10:55) [7]Если бы была промежуточная таблица, я б наверно туда сначала
кинул данные при помощи запроса предложенного Arhelon"ом,
затем удалил все в исходной таблице и наполнил ее из промежуточной , но ИМХО это не очень ...
Записей много , и в цикле бегать по полям не хотелось бы.
Хочется все поместить в файл sql для IbConsole.
← →
Парамонов (2003-04-01 11:15) [8]в 3:
update test s set kol = (select sum(kol) from test where name=s.name);
delete from test s where rowid <>(select max(rowid) from test where name=s.name group by name);
commit;
← →
Парамонов (2003-04-01 11:18) [9]Это для Oracle, для IB rowid поменять на поле - первичный ключ(ID?)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c