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

Вниз

Обновление таблицы   Найти похожие ветки 

 
gegc   (2002-02-18 15:38) [0]

есть таблица1:
клиент,дата,товар,цена,количество,стоимость

есть таблица2:
клиент,товар,цена
в ней указаны скидочные цены на определнные товары определённым клиентам

нужно пересчитать таблицу1 по таблице2

по всякокому пробовал, никак не получается обновить. В select"e всё получатось, А в update"е видители нельзя связывать 2 таблицы. Неужели мне придётся делать через select into таблица3

что делать?


 
Johnmen ©   (2002-02-18 15:43) [1]

А что за база то ?


 
zver   (2002-02-18 15:56) [2]

2 Johnmen
DBF Local SQL


 
Сергей Иванов ©   (2002-02-18 16:04) [3]

Как я понял, нужно пересчитать стоимость в 1 таблице в зависимости от количества и цены для клиента из 2 таблицы.

with Table1 do begin
while not EOF do begin
if Table2.Locate("CLIENT;TOVAR", VarArrayOf([CLIENT, TOVAR]), []) then begin
Edit;
FieldByName("SUMMA").Value := FieldByName("Amount").AsFloat*Table2.FieldByName("Price").AsFloat;
Post;
end; {if Table2.Locate}
Next;
end; {while not Table1.EOF}
end; {with Table1}


 
gegc   (2002-02-18 16:34) [4]

2 Сергей Иванов

гм. спасибо. Но мне хотелось обойтись без дельфей, одним эскуэлем.


 
Сергей Иванов ©   (2002-02-18 16:49) [5]

ГМ. А сикуэль у тебя не из дельфей?
Поставь вместо Table Query.
И апдэйть на здоровье.
Вместо ...
Edit;
FieldByName("SUMMA").Value := FieldByName("Amount").AsFloat*Table2.FieldByName("Price").AsFloat;
Post;
end;
...
Будет что-нибудь:
SQL у Query -
"Update table 1 set summa=:SUM_OF where (client=:client) and (tovar=:tovar)";
и далее:
while not ...
with Query do begin
Params.ParamValues["SUM_of"] := Query1.FieldByName("Amount").AsFloat*Query2.FieldByName("Price").AsFloat;
Params.ParamValues["client"] := Query2.FieldByName("Client").Value;
Params.ParamValues["tovar"] := Query2.FieldByName(""tovar").Value;
Prepare; ExecSQL;


 
gegc   (2002-02-18 16:56) [6]

не из дельфей :(


 
Mambet   (2002-02-19 06:16) [7]

А так не подойдет?

update table1 t1 set cena=
(select min(t2.cena) from table2 t2
where t2.Client=t1.Client and
t2.Tovar =t1.Tovar);
update table2 set stoimost=cena*kol;


 
Mambet   (2002-02-19 08:16) [8]

Сорри.Во втором апдейте конечно же table1 :)


 
GreySerg   (2002-02-19 15:47) [9]

позволю себе чуть обновить версию Mambet , чтобы было одним sql-ем:
update table1 t1
set price = (select min(price) from table2 t2 where
t2.Client=t1.Client and t2.tovar=t1.tovar),
summa = price*amount



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
1-57383
mavandrew
2002-03-01 16:52
2002.03.18
Копирование файлов.


14-57509
Niko_n
2002-02-04 21:04
2002.03.18
СОМ 2


14-57496
GoodBoy II
2002-02-02 22:13
2002.03.18
Кто знает какой-нибудь хорошенький Nет браузер с поддержкой скинов?


1-57420
Лана Розанова
2002-03-02 21:00
2002.03.18
Конвертация


1-57362
Анонимщик
2002-03-01 19:01
2002.03.18
Два THintWindow