Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
3-57339
Softmaster
2002-02-17 12:23
2002.03.18
Помощь по концепции.


1-57448
al22
2002-03-04 02:32
2002.03.18
Прозрачный BitMap


14-57501
HDD
2002-02-02 17:25
2002.03.18
Помогите пожалуйста!


1-57348
iea
2002-03-04 11:02
2002.03.18
Как обновить содержимое Form2 из Form1


1-57416
Olgerd
2002-03-01 20:07
2002.03.18
Сортировка в ListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский