Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли обойтись одним запросом ... [D5, IB6.x]


Andrey V. ©   (2003-04-01 09:04:00) 

В базе :

наименование | Кол.
===================
СТУЛ 10
СТУЛ 1
ДИВАН 12
ДИВАН 2
СТУЛ 4

надо получить(точнее не получить , а
удалить дубликаты , с исправлением поля "Кол.") :

наименование | Кол.
===================
СТУЛ 15
ДИВАН 14

Как бы это покрасивей сделать ?


Парамонов   (2003-04-01 11:18:00) [1]

Это для Oracle, для IB rowid поменять на поле - первичный ключ(ID?)


Парамонов   (2003-04-01 11:15:00) [2]

в 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;


Andrey V.   (2003-04-01 10:55:00) [3]

Если бы была промежуточная таблица, я б наверно туда сначала
кинул данные при помощи запроса предложенного Arhelon"ом,
затем удалил все в исходной таблице и наполнил ее из промежуточной , но ИМХО это не очень ...
Записей много , и в цикле бегать по полям не хотелось бы.
Хочется все поместить в файл sql для IbConsole.


zacho   (2003-04-01 09:22:00) [4]


> Arhelon © (01.04.03 09:19)

Жук прав.
" удалитьдубликаты , с исправлениемполя "Кол." - однимзапросом никак не получится


Жук   (2003-04-01 09:22:00) [5]

2 Arhelon
Автору нужно сделать update и delete в одном запросе. А ваш вариант только отбирает данные.


Arhelon   (2003-04-01 09:19:00) [6]

2Жук
Сам то понял что сказал????


Жук   (2003-04-01 09:16:00) [7]

Одним запросом не получится. Пишите ХП.


Arhelon   (2003-04-01 09:11:00) [8]

select name,sum(kol) from table
group by name
И всё :)
rtfm


Апач   (2003-04-01 09:08:00) [9]

Индекс по наименованию делай и в цикле обрабатывай по условию если наимен тек совпадает с наим предыд то удалить запись а количество перебрось вверх


Наверх

Титульная страница Поиск, карта сайта Написать письмо