Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Проблема запроса   Найти похожие ветки 

 
VadimSpb   (2005-11-24 10:42) [0]

Суть вопроса:
Запрос идет из Д7 в базу Аccess. Есть Табл.1 с полем ID, которое соответствует напр. стоимости услуги в Табл2. В Табл.2 Есть такой же ID с названием услуги и ее стоимостью. Также в Табл.1 есть поле Сумма. Нажимаем на кнопку в Д7 и увеличиваем значение в поле Сумма для:
1. Всех клиентов
2. Выбранных по какому-то критерию (пол и т.д.)

Проблема вроде не сложна, но Access не поддерживает скалярные запросы!


 
Sergey13 ©   (2005-11-24 10:59) [1]

Эх и путанно ты объясняешь, ИМХО. Попробуй попроще.
Вообще записи изменяются командой Update у которой могут быть а могут и не быть условия применения (кляуза Where).


 
msguns ©   (2005-11-24 11:07) [2]

А можно все тоже самое, только не на клоунском языке ?


 
VadimSpb   (2005-11-24 11:40) [3]

Попробую иначе.
Как запросом изменить  числовое значение в одной таблице путем суммирования его со значением из другой таблицы. Access не поддерживает подзапросы в предложении SET в команде Update.


 
Sergey13 ©   (2005-11-24 11:43) [4]

Т.е.
Update Table1 set F1=(select F2 from Table2 where Table1.Id=Table2.id)
не проходит?


 
msguns ©   (2005-11-24 12:07) [5]

>VadimSpb   (24.11.05 11:40) [3]
>Попробую иначе.
>Как запросом изменить  числовое значение в одной таблице путем суммирования его со значением из другой таблицы. Access не поддерживает подзапросы в предложении SET в команде Update.

Вот, уже лучше.
Для подобных "штучек" используются связки. Кроме того, в акцесе позволительно указывать после Update не только целевую (где будут изменения) таблицу, но и через запятую другую таблицу (ы), данные из которой(ых) будут участвовать в обновлении.


 
ANB ©   (2005-11-24 12:09) [6]


> Т.е.
> Update Table1 set F1=(select F2 from Table2 where Table1.
> Id=Table2.id)
> не проходит?

Так и в оракле не всегда проходит.


 
Sergey13 ©   (2005-11-24 12:15) [7]

2 [6] ANB ©   (24.11.05 12:09)
> Так и в оракле не всегда проходит.
При связи 1:1 всегда проходит. Да и не давал я кода. Я спрашивал про принцып.


 
msguns ©   (2005-11-24 12:15) [8]

Пример "связанного" апдэйта

UPDATE FONDSR AS R
  INNER JOIN Fonds IN "e:\DMsArch\FondsCmp\AlexDB\Data.mdb" AS TA
    ON (R.Letter=TA.Letter) AND (R.FondNumber=TA.FondNumber) AND
          (R.FondType=TA.FondType) AND (R.Category=TA.Category)
  SET R.FLT = 0, R.FLA = 1, R.AFID = TA.FID, R.AArcID = TA.ArcID,
         R.ACountry = TA.Country, R.ASDate = TA.StartDate, R.AEDate = TA.EndDate,
         R.AFSize = TA.FondSize, R.AQDI = TA.DontInvent,
         R.AQMF = TA.Microfished, R.AQS =  Secret, R.AAvl = TA.Availability,
         R.APassT = TA.PassTo, R.APassL =  TA.PassLette, R.APassN = TA.PassNumber,
         R.AJoinL =  TA.JoinLetter, R.AJoinN =  TA.JoinNumber, R.AUtil =  TA.UtilDate,
         R.ALossId =  TA.LossCauseId, R.ALossDt =  TA.LossDate, R.ALossDc =  TA.LossDoc;


 
msguns ©   (2005-11-24 12:20) [9]

Прошу прощения, в [5] вместо

позволительно указывать после Update не только целевую (где будут изменения) таблицу, но и через запятую другую таблицу (ы), данные из которой(ых) будут участвовать в обновлении.

следует читать:

позволительно указывать после Update не только целевую (где будут изменения) таблицу, но и через JOIN другую таблицу (ы), данные из которой(ых) будут участвовать в обновлении.


 
VadimSpb   (2005-11-24 13:52) [10]

Спасибо, все замечательно работает [8]



Страницы: 1 вся ветка

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
2-1132879303
sergey1126
2005-11-25 03:41
2005.12.11
Не все ячейки красяться в stringgride


4-1129209791
NightLord
2005-10-13 17:23
2005.12.11
Блокировка Windows


4-1128974346
Silver...
2005-10-10 23:59
2005.12.11
"RegisterHotKey" - оставить и активному приложению...


10-1108721885
kblc
2005-02-18 13:18
2005.12.11
OLEContainer and MDIChild


2-1132863505
LG
2005-11-24 23:18
2005.12.11
Подсветка