SQL запросы для движка HostCMS
Подскажите, пожалуйста, еще вот что, сейчас код вставляет и обновляет статус. А как должен выглядеть код, в случае, если нужно добавить статус только тогда, если товар на сайте без этого статуса, а если статус у товара есть, то не менять его?
Т.е. не менять статус на сайте, если у товара статус равен 1?
С уважением, поддержка ElbuzGroup.
Необходимо изменить SQL запрос, который обновляет данные:
Код: Выделить всё
UPDATE shop_properties_items_table, etrade_products SET shop_properties_items_table.shop_properties_items_value='1' WHERE shop_properties_items_table.shop_properties_items_value='0' AND etrade_products.tov_new=1 AND shop_properties_items_table.shop_items_catalog_item_id=etrade_products.tov_id AND shop_properties_items_table.shop_properties_items_id=22;;;
С уважением, поддержка ElbuzGroup.
Т.е. убирается первая часть запроса с командой INSERT...
Спасибо!
Спасибо!
Нет, она остаётся, изменяется вторая строка.
С уважением, поддержка ElbuzGroup.
Да, теперь понятно. Спасибо! Удачных Вам выходных!
Возникла такая странность, создан обмен флагов с сайтом, через дополнительные SQL запросы.
Выглядят они так
///////////// Новинка
INSERT INTO shop_properties_items_table (shop_items_catalog_item_id, shop_list_of_properties_id, shop_properties_items_value) SELECT tov_id, 134 as shop_list_of_properties_id, '1' FROM etrade_products WHERE tov_id NOT IN (SELECT shop_items_catalog_item_id FROM (SELECT shop_items_catalog_item_id, shop_list_of_properties_id FROM shop_properties_items_table) as t2 WHERE shop_list_of_properties_id=134);;;
UPDATE shop_properties_items_table, etrade_products SET shop_properties_items_table.shop_properties_items_value=IF(etrade_products.tov_new=1, '1', '0') WHERE shop_properties_items_table.shop_items_catalog_item_id=etrade_products.tov_id AND shop_properties_items_table.shop_list_of_properties_id=134;;;
///////////// Лучшая покупка
INSERT INTO shop_properties_items_table (shop_items_catalog_item_id, shop_list_of_properties_id, shop_properties_items_value) SELECT tov_id, 177 as shop_list_of_properties_id, '1' FROM etrade_products WHERE tov_id NOT IN (SELECT shop_items_catalog_item_id FROM (SELECT shop_items_catalog_item_id, shop_list_of_properties_id FROM shop_properties_items_table) as t2 WHERE shop_list_of_properties_id=177);;;
UPDATE shop_properties_items_table, etrade_products SET shop_properties_items_table.shop_properties_items_value=IF(etrade_products.best_sale=1, '1', '0') WHERE shop_properties_items_table.shop_items_catalog_item_id=etrade_products.tov_id AND shop_properties_items_table.shop_list_of_properties_id=177;;;
///////////// Распродажа
INSERT INTO shop_properties_items_table (shop_items_catalog_item_id, shop_list_of_properties_id, shop_properties_items_value) SELECT tov_id, 178 as shop_list_of_properties_id, '1' FROM etrade_products WHERE tov_id NOT IN (SELECT shop_items_catalog_item_id FROM (SELECT shop_items_catalog_item_id, shop_list_of_properties_id FROM shop_properties_items_table) as t2 WHERE shop_list_of_properties_id=178);;;
UPDATE shop_properties_items_table, etrade_products SET shop_properties_items_table.shop_properties_items_value=IF(etrade_products.spec_price=1, '1', '0') WHERE shop_properties_items_table.shop_items_catalog_item_id=etrade_products.tov_id AND shop_properties_items_table.shop_list_of_properties_id=178;;;
Почему-то, при обмене, всем товарам, у которых установлен флаг - "Лучшая покупка", автоматом присваивается флаг "Распродажа".
Как их разделить?
Выглядят они так
///////////// Новинка
INSERT INTO shop_properties_items_table (shop_items_catalog_item_id, shop_list_of_properties_id, shop_properties_items_value) SELECT tov_id, 134 as shop_list_of_properties_id, '1' FROM etrade_products WHERE tov_id NOT IN (SELECT shop_items_catalog_item_id FROM (SELECT shop_items_catalog_item_id, shop_list_of_properties_id FROM shop_properties_items_table) as t2 WHERE shop_list_of_properties_id=134);;;
UPDATE shop_properties_items_table, etrade_products SET shop_properties_items_table.shop_properties_items_value=IF(etrade_products.tov_new=1, '1', '0') WHERE shop_properties_items_table.shop_items_catalog_item_id=etrade_products.tov_id AND shop_properties_items_table.shop_list_of_properties_id=134;;;
///////////// Лучшая покупка
INSERT INTO shop_properties_items_table (shop_items_catalog_item_id, shop_list_of_properties_id, shop_properties_items_value) SELECT tov_id, 177 as shop_list_of_properties_id, '1' FROM etrade_products WHERE tov_id NOT IN (SELECT shop_items_catalog_item_id FROM (SELECT shop_items_catalog_item_id, shop_list_of_properties_id FROM shop_properties_items_table) as t2 WHERE shop_list_of_properties_id=177);;;
UPDATE shop_properties_items_table, etrade_products SET shop_properties_items_table.shop_properties_items_value=IF(etrade_products.best_sale=1, '1', '0') WHERE shop_properties_items_table.shop_items_catalog_item_id=etrade_products.tov_id AND shop_properties_items_table.shop_list_of_properties_id=177;;;
///////////// Распродажа
INSERT INTO shop_properties_items_table (shop_items_catalog_item_id, shop_list_of_properties_id, shop_properties_items_value) SELECT tov_id, 178 as shop_list_of_properties_id, '1' FROM etrade_products WHERE tov_id NOT IN (SELECT shop_items_catalog_item_id FROM (SELECT shop_items_catalog_item_id, shop_list_of_properties_id FROM shop_properties_items_table) as t2 WHERE shop_list_of_properties_id=178);;;
UPDATE shop_properties_items_table, etrade_products SET shop_properties_items_table.shop_properties_items_value=IF(etrade_products.spec_price=1, '1', '0') WHERE shop_properties_items_table.shop_items_catalog_item_id=etrade_products.tov_id AND shop_properties_items_table.shop_list_of_properties_id=178;;;
Почему-то, при обмене, всем товарам, у которых установлен флаг - "Лучшая покупка", автоматом присваивается флаг "Распродажа".
Как их разделить?
В SQL запросах явно прописано обновление флагов с ИД 177, 178, поэтому исключено перекрытие. Проверьте данные непосредственно в БД, таблица shop_properties_items_table, поиск по коду товара, по полю shop_items_catalog_item_id, посмотрите значения для ИД 134, 177,178.
С уважением, поддержка ElbuzGroup.
Нашел причину..
товары у которых происходит такое перекрытие свойств, имеют флаг спец.цена..
Т.е. при экспорте сайт понимает такие товары как с флагом спец.цена и распродажа..... хотя у них только один флаг - спец.цена.
Они имеют разные названия в таблицах:
spec_price tinyint(1) Флаг товара "Р" - распродажа
tov_dissale tinyint(1) Флаг товара "СЦ" - специальная цена
что-то в программе?
товары у которых происходит такое перекрытие свойств, имеют флаг спец.цена..
Т.е. при экспорте сайт понимает такие товары как с флагом спец.цена и распродажа..... хотя у них только один флаг - спец.цена.
Они имеют разные названия в таблицах:
spec_price tinyint(1) Флаг товара "Р" - распродажа
tov_dissale tinyint(1) Флаг товара "СЦ" - специальная цена
что-то в программе?