support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Временная таблица #TMP_PRICE содержит данные прочитанные из прайс-листа в сыром виде, т.е. все в виде текста. На этапе сравнения данные преобразуются к нужному типу и размеру (цены, курсы валют, наименование в 400 символов и т.п.) и записываются в глобальную временную таблицу ##TMP_PRICE_DATA
Код
CREATE TABLE ##TMP_PRICE_DATA
(
[ID] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY,
IMPORT_ID int NOT NULL,
Suspicious bit NOT NULL DEFAULT 0,
[SG_ID] [int] NULL,
[_WHAT_DO] [int] NULL,
[SG_B_ID] [int] NULL,
[_BRAND] [bit] NULL DEFAULT 0,
[SG_SID] [varchar] (200) NULL,
[_SID] [bit] NULL DEFAULT 0,
[SG_NAME] [varchar] (400) NULL,
[_NAME] [bit] NULL DEFAULT 0,
[SG_MODEL] [varchar] (400) NULL,
[_MODEL] [bit] NULL DEFAULT 0,
[SG_KIND] [varchar] (100) NULL,
[_KIND] [bit] NULL DEFAULT 0,
[SG_DESC] [text] NULL,
[_DESCRIPTION] [bit] NULL DEFAULT 0,
[SG_PRICE] [float] NULL,
[_PRICE] [bit] NULL DEFAULT 0,
[SG_NOTES] [text] NULL,
[_NOTES] [bit] NULL DEFAULT 0,
[SG_ARTIKUL] [varchar] (100) NULL,
[_ARTIKUL] [bit] NULL DEFAULT 0,
[SG_PRESENT] [bit] NULL,
[_PRESENT] [bit] NULL DEFAULT 0,
[SG_WARRANTY] [varchar] (100) NULL,
[_WARRANTY] [bit] NULL DEFAULT 0,
[SG_REST] [float] NULL,
[_REST] [bit] NULL DEFAULT 0,
[SG_CATEGORY] [varchar] (150) NULL,
[_CATEGORY] [bit] NULL DEFAULT 0,
[SG_URL] [varchar] (550) NULL,
[_URL] [bit] NULL DEFAULT 0,
[SG_IMAGE_URL] [varchar] (550) NULL,
[_IMAGE_URL] [bit] NULL DEFAULT 0,
[SG_DESC_FULL] [text] NULL,
[_DESC_FULL] [bit] NULL DEFAULT 0,
[SG_CURRENCY] [varchar] (100) NULL,
[_CURRENCY] [bit] NULL DEFAULT 0,
[SG_CURRENCY_RATE] [float] NULL,
[_CURRENCY_RATE] [bit] NULL DEFAULT 0,
[SG_PRICE2] [float] NULL,
[_PRICE2] [bit] NULL DEFAULT 0,
[SG_CURRENCY2] [varchar] (100) NULL,
[_CURRENCY2] [bit] NULL DEFAULT 0,
[SG_CURRENCY_RATE2] [float] NULL,
[_CURRENCY_RATE2] [bit] NULL DEFAULT 0,
[SG_SERIES] [varchar] (100) NULL,
[_SERIES] [bit] NULL DEFAULT 0,
[SG_PRODUCER_CODE] [varchar] (100) NULL,
[_PRODUCER_CODE] [bit] NULL DEFAULT 0,
[SG_PARTY] [varchar] (100) NULL,
[_PARTY] [bit] NULL DEFAULT 0,
[SG_COUNT_IN_PACKING] [float] NULL,
[_COUNT_IN_PACKING] [bit] NULL DEFAULT 0,
[SG_COLLECTION] [varchar] (100) NULL,
[_COLLECTION] [bit] NULL DEFAULT 0,
[SG_SEASON] [varchar] (100) NULL,
[_SEASON] [bit] NULL DEFAULT 0,
[SG_MIN_ORDER] [float] NULL,
[_MIN_ORDER] [bit] NULL DEFAULT 0,
[SG_DELIVERY] [varchar] (100) NULL,
[_DELIVERY] [bit] NULL DEFAULT 0,
[SG_PRODUCER_COUNTRY] [varchar] (100) NULL,
[_PRODUCER_COUNTRY] [bit] NULL DEFAULT 0,
[SG_COLOR] [varchar] (150) NULL,
[_COLOR] [bit] NULL DEFAULT 0,
[SG_SIZE] [varchar] (150) NULL,
[_SIZE] [bit] NULL DEFAULT 0
)
В которой соответственно SG_ID - код товара поставщика который найден в базе данных программы по уникальному коду (поле код поставщика SG_SID) или по наименованию (SG_NAME)
При работе с данной таблицей нужно так же учитывать поле IMPORT_ID в котором хранится к какому именно импорту принадлежат товары данного прайс-листа, т.к. в общем случае одновременно может быть несколько импортов прайсов. Значение текущего импорта передается в дополнительные SQL-скрипты схемы импорта через параметр :IMPORT_ID
Т.е. ваш запрос будет выглядеть приблизительно так:
Код
UPDATE ##TMP_PRICE_DATA
SET SG_ARTIKUL = ARTIKUL
FROM (SELECT G_SID as ARTIKUL, SG_ID as GOOD_ID FROM TBL_GOODS g, TBL_SUPPLIERS_GOODS sg WHERE sg.SG_G_ID = g.G_ID) t
WHERE SG_ID = GOOD_ID
AND IMPORT_ID = :IMPORT_ID;
UPDATE ##TMP_PRICE_DATA
SET _ARTIKUL = 1
WHERE ISNULL(SG_ARTIKUL, '') <> ''
AND IMPORT_ID = :IMPORT_ID;
Этот скрипт для схемы импорта нужно использовать после сравнения товаров или перед записью в справочник товаров поставщиков.
|