Главная страница
    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.46 MB
Время: 0.038 c
14-1132484150
Separator
2005-11-20 13:55
2005.12.11
try ... except


8-1120831896
4ubaka
2005-07-08 18:11
2005.12.11
перевод изобрадений из jpg в bmp


2-1132602966
Антоха
2005-11-21 22:56
2005.12.11
Наипростешая програмка


2-1132308361
@Br
2005-11-18 13:06
2005.12.11
Вопрос знатокам: MySQL(v4.0.18)+Delphi 7


4-1128858993
ArtemESC
2005-10-09 15:56
2005.12.11
Создание панелей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский