Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "мудреный" запрос / 6 сообщений из 6, страница 1 из 1
28.11.2002, 20:07
    #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
28.11.2002, 20:28
    #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
28.11.2002, 20:31
    #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
29.11.2002, 12:39
    #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
04.02.2003, 15:40
    #32101008
kreek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"мудреный" запрос
Я предпологаю, что ошибка возникает из-за подчиненного запроса. решением проблемы будет DLookUp, в вашем случае DCount
...
Рейтинг: 0 / 0
10.02.2003, 15:29
    #32103963
snasonov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"мудреный" запрос
Решил такую же проблему через временную таблицу (как то это неправильно). Самое интересное, что такой сложный запрос на обновление данных (для Access) почему то не работает если данные брать из промежуточного запроса, а из таблицы - работает.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "мудреный" запрос / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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