Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / помогите с запросом / 23 сообщений из 23, страница 1 из 1
12.10.2004, 12:56:40
    #32733813
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
на скуле работало на ассекск нет
исх. данные
t1 - uid (int) s (int)
t2 - code(int) s(int)

в таблице t1 хранятся коды товара и сумма их оплаты
в таблице t2 хранятся проводки по оплате
полей само собой больше - здесь сама суть

в t1 в поле s я хочу записать сумму, оплаченную за товар, и беру ее из t2
запросом вида :
update t1 set s = ( select sum(s) from t2 where t2.code=t1.uid)
ну и получаю что "В операции должен исп обновляемый запрос."
help pls !

...
Рейтинг: 0 / 0
12.10.2004, 13:00:38
    #32733829
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Думаю, что сначала придется отдельный запрос на суммирование написать, а затем его приджонить к первой таблице в абгрейде
...
Рейтинг: 0 / 0
12.10.2004, 13:02:31
    #32733840
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Если вызов запроса из самого акцесса, можно воспользоваться DSum.
Извне - один из вариантов в поиске:
http://www.sql.ru/forum/actualtopics.aspx?search=%C2+%EE%EF%E5%F0%E0%F6%E8%E8+%E4%EE%EB%E6%E5%ED+%E8%F1%EF%EE%EB%FC%E7%EE%E2%E0%F2%FC%F1%FF+%EE%E1%ED%EE%E2%EB%FF%E5%EC%FB%E9+%E7%E0%EF%F0%EE%F1&submit=%CD%E0%E9%F2%E8&bid=4
...
Рейтинг: 0 / 0
12.10.2004, 13:03:08
    #32733842
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
2 Rivkin Dmitry
Не пройдет так.
...
Рейтинг: 0 / 0
12.10.2004, 13:08:43
    #32733866
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Geo2 Rivkin Dmitry
Не пройдет так.
Почему не пройдет? Сооружаем qq1 = "SELECT t2.code, Sum(t2.s) AS SumOfs
FROM t2
GROUP BY t2.code;"

и затем:

UPDATE t1 INNER JOIN qq1 ON t1.uid = qq1.code SET t1.s = [SumOfs];
...
Рейтинг: 0 / 0
12.10.2004, 13:16:23
    #32733890
Iskander68
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Вчера столкнулся с подобным - использовать запрос на суммирование в запросе
на обновление не получилось. Пришлось действовать тупо: создать временную
таблицу из запроса, потом ее приджойнить к запросу на обновление.

--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
12.10.2004, 13:16:53
    #32733894
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Rivkin Dmitry Geo2 Rivkin Dmitry
Не пройдет так.
Почему не пройдет? Сооружаем qq1 = "SELECT t2.code, Sum(t2.s) AS SumOfs
FROM t2
GROUP BY t2.code;"

и затем:

UPDATE t1 INNER JOIN qq1 ON t1.uid = qq1.code SET t1.s = [SumOfs];
А проверить?
...
Рейтинг: 0 / 0
12.10.2004, 13:17:31
    #32733897
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Я про что!
От того что вы завернули подзапрос в отдельном запросе он не стал обновляемым!!!
...
Рейтинг: 0 / 0
12.10.2004, 13:23:45
    #32733913
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
А! Верно! Забывать стал, что Акс не позволяет апдейтить из nonupdatable query, слишком много пользуюсь SQL Server
Прошу прощения!
...
Рейтинг: 0 / 0
12.10.2004, 13:23:56
    #32733914
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Проверил (A97) - не работает.
...
Рейтинг: 0 / 0
12.10.2004, 13:32:29
    #32733934
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
воспользовался советом GEO
UPDATE t1 SET s = DSum("s","t2","Code=" & [t1].[uid]);
спасибо.
...
Рейтинг: 0 / 0
12.10.2004, 13:38:22
    #32733949
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Кстати, это положение, что Акс не позволяет в запросе производить update если соурсом явсяется non updatable query, одно из самых, если не самое неприятное в Аксе! Почему разработчики Акса не могут переступить через этот запрет?
...
Рейтинг: 0 / 0
12.10.2004, 14:09:26
    #32734070
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
м..да радость была неполной и недолгой
вызов из vb
With myApp.Service.Command
.CommandType = adCmdStoredProc
.CommandText = "flatPaySumma"
.Execute
End With
где flatPaySumma это запрос
UPDATE t1 SET s = DSum("s","t2","Code=" & [t1].[uid]);
ну а в ответ :
Неопределенная функция 'DSum' в выражении.
Microsoft JET Database Engine
в чем не прав ?
...
Рейтинг: 0 / 0
12.10.2004, 14:17:12
    #32734098
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Rivkin DmitryКстати, это положение, что Акс не позволяет в запросе производить update если соурсом явсяется non updatable query, одно из самых, если не самое неприятное в Аксе! Почему разработчики Акса не могут переступить через этот запрет?
А вот для этого есть функции типа DMax (чего нет в том же MSSQL)!!!
...
Рейтинг: 0 / 0
12.10.2004, 14:19:34
    #32734104
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Я же говорю, что это только изнутри акцесса будет работать.

Извне - см. поиск. Временной таблицей можно обойти.
...
Рейтинг: 0 / 0
12.10.2004, 14:26:50
    #32734135
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
paparome Rivkin DmitryКстати, это положение, что Акс не позволяет в запросе производить update если соурсом явсяется non updatable query, одно из самых, если не самое неприятное в Аксе! Почему разработчики Акса не могут переступить через этот запрет?
А вот для этого есть функции типа DMax (чего нет в том же MSSQL)!!!

Ничего не мешает соорудить такую ф-ию или что-нибудь еще и позакавыристее! :)
На самом деле, я люблю Акс! Есть в нем прекрасные инструменты для обработки БД и великолепные инструменты для интерфейса! В сочетании с SQL Server Акс становится еще более удобным средством разработки прикладных программ
...
Рейтинг: 0 / 0
12.10.2004, 16:22:50
    #32734520
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Код: plaintext
1.
update t1 inner join t2 on t1.id=t2.code
set t1.s=t1.s+t2.s
...
Рейтинг: 0 / 0
12.10.2004, 16:55:47
    #32734667
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
(c)VIG
Код: plaintext
1.
update t1 inner join t2 on t1.id=t2.code
set t1.s=t1.s+t2.s

Не уверен :(
Почему-то мне кажется, что update применяется к каждой обновляемой строке только ОДИН раз
Хотя надо проверить :)

Опа - проверил :)
И в правду все робит :)

PS: надо взять на вооружение

А понял откуда такое предположение
В MSSQL такой фокус не проходит
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
create table #x1 (id int, xxx int default( 0 ))
create table #x2 (id int, id1 int, xxx int)

insert into #x1 (id)
select  1 
union
select  2 
union
select  3 

insert into #x2 (id, id1, xxx)
select  1 ,  1 ,  10 
union
select  2 ,  1 ,  20 
union
select  3 ,  2 ,  15 
union
select  4 ,  2 ,  25 
union
select  5 ,  2 ,  10 
union
select  6 ,  3 ,  15 
union
select  7 ,  3 ,  5 

update #x1
set xxx = #x1.xxx + #x2.xxx
from #x1 inner join #x2 on #x1.id = #x2.id1

select * from #x1

drop table #x2
drop table #x1
...
Рейтинг: 0 / 0
12.10.2004, 17:14:34
    #32734725
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
VIG никогда не перестанет меня учить :)

Здорово! :)
...
Рейтинг: 0 / 0
12.10.2004, 17:17:10
    #32734727
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
paparomeНе уверен :( ...
Хотя надо проверить :) ....

Опа - проверил :)
И в правду все робит :)

PS: надо взять на вооружение...

А понял откуда такое предположение...
В MSSQL такой фокус не проходит...

"There are more things in heaven and earth, Horatio,Than are dreamt of in your philosophy."
:)
...
Рейтинг: 0 / 0
12.10.2004, 18:11:21
    #32734884
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
(c)VIG
Снимаю шляпу!

Надо только учитывать, что пользоваться запросом можно только один раз!
Или чистить таблицу t1 перед каждым использованием.
...
Рейтинг: 0 / 0
13.10.2004, 08:57:05
    #32735325
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
(c)VIG paparomeНе уверен :( ...
Хотя надо проверить :) ....

Опа - проверил :)
И в правду все робит :)

PS: надо взять на вооружение...

А понял откуда такое предположение...
В MSSQL такой фокус не проходит...

"There are more things in heaven and earth, Horatio,Than are dreamt of in your philosophy."
:)
Это - типа
А перевести?
...
Рейтинг: 0 / 0
13.10.2004, 10:27:32
    #32735517
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
А что ,молодежь Шекспира уже не читает? :)
Это из Гамлета :"Есть многое на свете друг Гораций ,что и не снилось нашим мудрецам"
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / помогите с запросом / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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