powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "мудреный" запрос
6 сообщений из 6, страница 1 из 1
"мудреный" запрос
    #32073695
John_eg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как осуществить запрос следующего вида в Access:
Код: 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.
update [SalesToList]
  set  
    [SalesToList].[Count]=[SalesToList].[Count]+
       (select
          [Count] 
        from 
          [Sales] 
        where 
          [SaleID]= 1  and 
          [ID]=[SalesToList].[ID] and 
          [PGroup]=[SalesToList].[PGroup] and 
          [Shop]=[SalesToList].[Shop] and 
          [Price]=[SalesToList].[Price]
       )
  where 
    exists 
      (select 
         * 
       from 
         [Sales] 
       where  
         [SaleID]= 1  and 
         [ID]=[SalesToList].[ID] and 
         [PGroup]=[SalesToList].[PGroup] and 
         [Shop]=[SalesToList].[Shop] and 
         [Price]=[SalesToList].[Price]
      )

То есть для строк из Sales и SalesToList с одинаковыми ID сложить поля Count и записать итог в SalesToList?
Этот запрос написан в SQL Server, там он работает, необходимо перенести на Access. При выполнении в Access ошибка: "Operation must use an updateable query"
...
Рейтинг: 0 / 0
"мудреный" запрос
    #32073698
John_eg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходные таблицы:
Код: 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.
create table [Sales] 
(
  [SaleID] INT NOT NULL, 
  [ID] INT NOT NULL, 
  [PGroup] INT NOT NULL, 
  [Shop] INT NOT NULL, 
  [Count] INT NOT NULL, 
  [Price] FLOAT NOT NULL, 
  [Date] DATETIME, 
  [Time] DATETIME NOT NULL
)

create table [SalesToList] 
(
  [ID] INT NOT NULL, 
  [PGroup] INT NOT NULL, 
  [Shop] INT NOT NULL, 
  [Count] INT NOT NULL, 
  [Price] FLOAT
)

insert into Sales ([ID], [PGroup], [Shop], [Count], [Price]) values ( 1 ,  11 ,  1 ,  1 ,  10 )
insert into Sales ([ID], [PGroup], [Shop], [Count], [Price]) values ( 2 ,  11 ,  1 ,  2 ,  10 )
insert into Sales ([ID], [PGroup], [Shop], [Count], [Price]) values ( 3 ,  11 ,  1 ,  3 ,  10 )
insert into SalesToList ([ID], [PGroup], [Shop], [Count], [Price]) values ( 1 ,  11 ,  1 ,  5 ,  10 )
insert into SalesToList ([ID], [PGroup], [Shop], [Count], [Price]) values ( 2 ,  11 ,  1 ,  10 ,  10 )
...
Рейтинг: 0 / 0
"мудреный" запрос
    #32073700
John_eg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sorry.
Код: plaintext
1.
2.
insert into Sales ([SaleID], [ID], [PGroup], [Shop], [Count], [Price], [Time]) values ( 1 ,  1 ,  11 ,  1 ,  1 ,  10 ,  0 )
insert into Sales ([SaleID], [ID], [PGroup], [Shop], [Count], [Price], [Time]) values ( 1 ,  2 ,  11 ,  1 ,  2 ,  10 ,  0 )
insert into Sales ([SaleID], [ID], [PGroup], [Shop], [Count], [Price], [Time]) values ( 1 ,  3 ,  11 ,  1 ,  3 ,  10 ,  0 )
...
Рейтинг: 0 / 0
"мудреный" запрос
    #32074000
Vasiliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблицы показались мне несколько странными, но видимо на это есть свои причины, возможно надо видеть задачу целиком
Если я правильно понял то ответ такой

UPDATE SalesToList INNER JOIN Sales ON (SalesToList.PGroup = Sales.PGroup) AND (SalesToList.Shop = Sales.Shop) AND (SalesToList.Id = Sales.Id) AND (SalesToList.Price = Sales.Price) SET SalesToList.Count = SalesToList.Count + Sales.Count
WHERE (((Sales.SaleId)=1));
...
Рейтинг: 0 / 0
"мудреный" запрос
    #32101008
kreek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я предпологаю, что ошибка возникает из-за подчиненного запроса. решением проблемы будет DLookUp, в вашем случае DCount
...
Рейтинг: 0 / 0
"мудреный" запрос
    #32103963
snasonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил такую же проблему через временную таблицу (как то это неправильно). Самое интересное, что такой сложный запрос на обновление данных (для Access) почему то не работает если данные брать из промежуточного запроса, а из таблицы - работает.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "мудреный" запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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