:: Visual Foxpro, Foxpro for DOS
Тамар Гранор пример по коррелированнм UPDATE
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
После нашего участия и победы в фоксовом соревновании 2002 года одним из призов было
получение анонсов ( короткого содержания) и tips ( решений маленьких вопросов)
из журнала Fox Advicer Обычно присылали всякие мелочи, я все собирал до кучи, чтобы это не порознь, а в целом тут поместить на сайте. Для тех, кто не знаком с этим журналом, короткая справка.
Фокс адвайсор в отличии от FoxTalk у нас не издается, имеет вид настоящего журнала,
красиво оформлен, стоит раза в 3 его дороже.
Раньше , году скажем в 1995-1996 очень много там было интересненького, у меня года за полтора есть номера старые. Сейчас там уже давненько одни и те же личности публикуются и все как то обюрократилось, как в и в нашем государстве.
Но вот сегодня прислали очередное письмо, которое заслуживает по моему мнению
внимания
О новом синтаксисе в 9 версии для коррелированных update
Эта возможность всегда была и в Оракл и в MS SQL
В фоксе мы делали ее в основном обычным replace for
А VFP update такого не умел
С 9 версии умеет
Вот статейка Тамар Гранор, о которой я говорил
Correlated Updates in Visual FoxPro 9
Visual FoxPro 9 offers a new way to specify records to be updated. Learn an easier way to change data in many records at once.

By Tamar E. Granor, FoxPro Advisor technical editor
ARTICLE INFO
FOXPRO ADVISOR
Length 0.25 page
Doc # 14629

No reader comments yet.

The SQL UPDATE command in Microsoft Visual FoxPro (VFP) provides an easy way to change data in many records at once. However, in VFP 8 and earlier, when you want to indicate which records to update based on data in another table, you have to use a subquery.

FoxPro Advisor Sponsors
# Hallogram Publishing - Your #1 source for Visual FoxPro Tools. Over 14,500 software products.
# Stonefield Systems Group - Stonefield Query--develop customized reports for nearly any application

ADVERTISEMENT


VFP 9 offers an alternative way to specify the records to be updated. The FROM clause now accepts multiple tables with join conditions. Only those records in the target table (the one listed after the UPDATE keyword) that are specified by the join conditions (combined with the filter conditions in the WHERE clause) are updated.

Consider a data warehouse (SalesByProduct) designed to hold sales by product for a single month. The new FROM clause makes it possible to update this table with a single command, shown in listing 1.

Listing 1: Correlated update -- This command uses a derived table and the ability to join tables in the UPDATE command to put a new month's data into the data warehouse table.

UPDATE SalesByProduct ;
SET SalesByProduct.TotalSales = ;
NVL(MonthlySales.TotalSales, $0), ;
SalesByProduct.UnitsSold = ;
NVL(MonthlySales.UnitsSold, 0) ;
FROM SalesByProduct ;
LEFT JOIN (SELECT Order_Line_Items.Product_ID, ;
SUM(Quantity*Order_Line_Items.Unit_Price) ;
AS TotalSales, ;
SUM(Quantity) AS UnitsSold ;
FROM Order_Line_Items ;
JOIN Orders ;
ON Order_Line_Items.Order_ID = Orders.Order_ID ;
AND (MONTH(Order_Date) = nMonth ;
AND YEAR(Order_Date) = nYear) ;
GROUP BY 1);
AS MonthlySales ;
ON SalesByProduct.Product_ID = MonthlySales.Product_ID

This tip comes from Tamar's "Do More With VFP's SQL Commands" in FOXPRO ADVISOR magazine. In the article, she demonstrates how VFP 9 removes limits in a number of areas. Specifically, she shows you the range of new possibilities in VFP 9 related to its SQL sublanguage. These include improvements to correlated subqueries, as well as faster query performance. Pro-level subscribers to the magazine can read the full article online at Advisor.com.




------------------
не имей 100 рублей, а имей сто друзей
Ratings: 0 negative/0 positive
Re: Тамар Гранор пример по коррелированнм UPDATE
Kaiser
Автор

Сообщений: 272
Дата регистрации: 31.10.2002
если так все и будет, то это прорыв




------------------
жизнь дала трещину и стала похожа на ж.....
Ratings: 0 negative/0 positive
Re: Тамар Гранор пример по коррелированнм UPDATE
Равиль

Сообщений: 6555
Откуда: Уфа
Дата регистрации: 01.08.2003
boba :
Цитата:
После нашего участия и победы в фоксовом соревновании 2002 года ...
Владимир, можно об этом чуть подробнее, кто, где и как ?



------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Тамар Гранор пример по коррелированнм UPDATE
Syberex

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
А можна выделить жирным например, где в этом запросе корреляция ,
а то я это слово вообще не понимаю...

Если имеется ввиду Update с опцией FROM ,
то я уже использую ;) , а VFP6 так нехватало!




------------------
Ratings: 0 negative/0 positive
Re: Тамар Гранор пример по коррелированнм UPDATE
Aleksey Tsingauz [MSFT]
Цитата:
А можна выделить жирным например, где в этом запросе корреляция ,
а то я это слово вообще не понимаю...

Если имеется ввиду Update с опцией FROM ,
то я уже использую ;) , а VFP6 так нехватало!

Да, имеется в виду UPDATE на основе данных из других таблиц - UPDATE ... FROM ...
Ratings: 0 negative/0 positive
Re: Тамар Гранор пример по коррелированнм UPDATE
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
ON SalesByProduct.Product_ID = MonthlySales.Product_ID
Определяет как связываются обновляемая и обновляющая таблицы. То что раньше
шло в SET RELATION.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Тамар Гранор пример по коррелированнм UPDATE
Kaiser
Автор

Сообщений: 272
Дата регистрации: 31.10.2002
Честно говоря меня всегда вырубало ограниченность Update From тока по текущей таблице, и приходилось всегда изворачиваться, даже в банальном Access работал Update From как надо, о скока нервов .....




------------------
жизнь дала трещину и стала похожа на ж.....
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 45 (Гостей: 45)

© 2000-2024 Fox Club 
Яндекс.Метрика