Текущий архив: 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