powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / set с агрегатом и подзапросом в update
8 сообщений из 8, страница 1 из 1
set с агрегатом и подзапросом в update
    #37053705
Sgt. Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Возникла такая задачка:
Две дбф-таблицы, надо из первой взять по условию несколько полей, сложить значения этих полей и записать сумму во вторую таблицу.

Помогите составить такой запрос, пожалуйста!

(к таблицам обращаюсь через ADODB)
...
Рейтинг: 0 / 0
set с агрегатом и подзапросом в update
    #37053714
Sgt. Pepper,
в двух словах: выполняете в Вашем ADO соединении запрос такого вида
Код: plaintext
1.
2.
3.
insert into table2(<field_for_summ>, <other requared fiels>)
select field1 + field2 + ... + fieldN, <data for other requared fields>
from table1
where <conditions>;
...
Рейтинг: 0 / 0
set с агрегатом и подзапросом в update
    #37053764
Sgt. Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнем,

Спасибо, однако вместо insert мне надо update table2
...
Рейтинг: 0 / 0
set с агрегатом и подзапросом в update
    #37053787
Sgt. Pepper,
не вопрос:
Код: plaintext
1.
2.
update table2 
set <field_for_summ>=(select field1 + field2 + ... + fieldN from table1 where <conditions>)
where <conditions for table2>;
...
Рейтинг: 0 / 0
set с агрегатом и подзапросом в update
    #37053799
Sgt. Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнем,

Спасибо * 2! :)
Я на агрегатах зациклился, а оказалось все просто... гениально )
...
Рейтинг: 0 / 0
set с агрегатом и подзапросом в update
    #37055847
Sgt. Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, но меня дезинформировал постановщик задачи - говорил об одном, а показывал другое... )
Вобщем надо из первой взять по условию несколько _записей_ одного поля, сложить эти значения и записать сумму во вторую таблицу

Я написал примерно вот так:

Код: plaintext
1.
2.
3.
4.
UPDATE TABLE2.DBF
SET F = (SELECT SUM(INPUT) FROM TABLE1.DBF
             WHERE BALANCE = '1' OR BALANCE = '2' OR BALANCE = '3' OR BALANCE = '4')
WHERE KKR =  21  AND FIX =  1 "

... но в ответ получил Runtime error -2147467259 (80004005) "В операции должен использоваться обновляемый запрос"

SELECT работает успешно, а UPDATE не хочет (
...
Рейтинг: 0 / 0
set с агрегатом и подзапросом в update
    #37055959
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а
Код: plaintext
1.
2.
UPDATE TABLE2.DBF
SET F =  1 
WHERE KKR =  21  AND FIX =  1 "
проходит?


ЗЫ:
Код: plaintext
...WHERE BALANCE IN ('1', '2', '3', '4')
а если это поле все-таки числовое, апострофы не нужны и тогда так:
Код: plaintext
...WHERE BALANCE BETWEEN  1  AND  4 
...
Рейтинг: 0 / 0
set с агрегатом и подзапросом в update
    #37056113
Sgt. Pepper,
можной за два шага (если приемлимо):
1) результат запроса select sum(INPUT) from ... - в переменную;
2) значение переменной использовать для формирования текста запроса на обновление.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / set с агрегатом и подзапросом в update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]