SQL запросы для индивидуального обновления сайта интернет-магазина

SQL запросы позволяют обновить сайт интернет-магазина под Ваши индивидуальные требования. Под каждую CMS необходимы свои SQL запросы, поэтому в этом разделе будут отдельные запросы по каждой CMS. Запросы прописываются в разделе "Настройка SQL запросов"

CMS OpenCart

Примеры даны с префиксом таблиц "oc_", если у вас другой префикс, измените его в запросе.

Обновление описания товара OpenCart на основании краткого описания E-Trade Jumper

UPDATE oc_product_description t1, etrade_product_temp t2
SET t1.description = t2.description_short
WHERE t1.product_id = t2.product_id AND t1.language_id = t2.language_id;;;


Обновление SEO URL (ЧПУ) OpenCart на основании ЧПУ E-Trade Jumper
При обновлении сайта OpenCart, ЧПУ прописываются только для новых записей (новых категорий, товаров), чтобы обновить текущие ЧПУ на сайте используйте эти SQL запросы.

OpenCart версии 2.X
# Категории
UPDATE oc_url_alias ua
INNER JOIN etrade_category_temp e ON e.category_id = CAST(SUBSTRING(ua.query FROM 13) as UNSIGNED)
SET ua.keyword = e.seo_url
WHERE e.row_exist = 1 AND e.seo_url!='' AND ua.query LIKE 'category_id=%';;;


# Товары
UPDATE oc_url_alias ua
INNER JOIN etrade_product_temp e ON e.product_id = CAST(SUBSTRING(ua.query FROM 12) as UNSIGNED)
SET ua.keyword = e.seo_url
WHERE e.row_exist = 1 AND e.seo_url!='' AND ua.query LIKE 'product_id=%';;;


# Производители
UPDATE oc_url_alias ua
INNER JOIN etrade_manufacturer_temp e ON e.manufacturer_id = CAST(SUBSTRING(ua.query FROM 17) as UNSIGNED)
SET ua.keyword = e.seo_url
WHERE e.row_exist = 1 AND e.seo_url!='' AND ua.query LIKE 'manufacturer_id=%';;;


OpenCart версии 3.X
# Категории
UPDATE oc_seo_url su
INNER JOIN etrade_category_temp e ON e.category_id = CAST(SUBSTRING(su.query FROM 13) as UNSIGNED)
SET su.keyword = e.seo_url
WHERE e.row_exist = 1 AND e.seo_url!='' AND su.query LIKE 'category_id=%';;;


# Товары
UPDATE oc_seo_url su
INNER JOIN etrade_product_temp e ON e.product_id = CAST(SUBSTRING(su.query FROM 12) as UNSIGNED)
SET su.keyword = e.seo_url
WHERE e.row_exist = 1 AND e.seo_url!='' AND su.query LIKE 'product_id=%';;;


# Производители
UPDATE oc_seo_url su
INNER JOIN etrade_manufacturer_temp e ON e.manufacturer_id = CAST(SUBSTRING(su.query FROM 17) as UNSIGNED)
SET su.keyword = e.seo_url
WHERE e.row_exist = 1 AND e.seo_url!='' AND su.query LIKE 'manufacturer_id=%';;;


Обновление цен для опций товаров OpenCart на основании товаров-опций созданных в базовом каталоге E-Trade Jumper
Для обновления на сайте цен опций, необходимо активировать флаг "Обновлять значения опций на основании товаров-опций"

Вы можете для товаров опций обновлять разницу цены, между основным товаром и товаром опцией, если каждая опция имеет свою цену

UPDATE oc_product_option_value pov
INNER JOIN etrade_product_attribute_temp pa ON pa.product_id = pov.product_id AND pov.product_option_id = pa.product_option_id AND pov.option_id = pa.option_id AND
      pov.option_value_id = pa.product_option_value_id
INNER JOIN (SELECT uuid, price FROM etrade_product_temp WHERE type_id=1) p ON p.uuid = pa.product_uuid
INNER JOIN (SELECT uuid_parent, price FROM etrade_product_temp WHERE type_id=2) p_option ON p_option.uuid_parent = p.uuid
SET pov.price = p_option.price - p.price;;;

CMS 1C-Bitrix

Обновление свойста битрикса на основании обычного поля E-Trade Jumper.
Например для обновления свойства битрикса с кодом SUPPLIER для инфоблока ID = 2 на основании поля "Название контрагента" необходимо использовать эти SQL запросы

SET @iblock_id = 2;;;
SET @property_code = 'SUPPLIER';;;
SET @property_id = (SELECT b_iblock_property.id
                        FROM b_iblock_property
                        WHERE b_iblock_property.code = @property_code AND
                              b_iblock_property.IBLOCK_ID = @iblock_id
                        LIMIT 1);;;

INSERT INTO b_iblock_element_property (iblock_property_id, iblock_element_id, value)
SELECT  @property_id, b_iblock_element.id, etrade_product_temp.contractor_name
FROM b_iblock_element, etrade_product_temp
WHERE b_iblock_element.xml_id = etrade_product_temp.uuid AND
      b_iblock_element.iblock_id = @iblock_id AND
      b_iblock_element.id NOT IN
    (SELECT iblock_element_id FROM b_iblock_element_property WHERE iblock_property_id = @property_id GROUP BY iblock_element_id);;;

UPDATE b_iblock_element_property, b_iblock_element, etrade_product_temp
SET b_iblock_element_property.value = etrade_product_temp.contractor_name
WHERE b_iblock_element.id = b_iblock_element_property.iblock_element_id AND
      b_iblock_element.xml_id = etrade_product_temp.uuid AND
      b_iblock_element.iblock_id = @iblock_id AND
      b_iblock_element_property.iblock_property_id = @property_id;;;