"Включаем" свойство галочка у товаров определённого производителя

Когда нужно включить галочку (проставить значение "1") у определённого свойства в товарах определённого производителя:

UPDATE `property_value_ints`
JOIN `shop_items` ON `property_value_ints`.`entity_id` = `shop_items`.`id`
   AND `shop_items`.`shop_producer_id` = 9
SET value = 1
WHERE `property_id` = 17

Присоединяем к таблице свойств типа чекбокс  property_value_ints таблицу shop_items с отбором по значению id и по производителю с id=9. Назначаем свойству значение "1", где id свойства равно "13"

SQL

SQL запросы для YML файла (Яндекс.Маркет)

 Отключить экспорт всех модификаций товаров в Я.Маркет
UPDATE `shop_items` SET `yandex_market` = 0 WHERE `modification_id` > 0;
Включить экспорт всем товарам в Яндекс.Маркет
UPDATE `shop_items` SET `yandex_market` = 1 WHERE `shop_id` = 1;
Отключение экспорта всем товарам в Яндекс.Маркет
UPDATE `shop_items` SET `yandex_market` = 0 WHERE `shop_id` = 1;

`count` = 0;
Отключение экспорта товаров в Я.Маркет определенной группы
UPDATE `shop_items` SET `yandex_market` = 0 WHERE `shop_group_id` = 717;
Снять всем товарам магазина галочку "Самовывоз" для экспорта в Яндекс.Маркет
UPDATE `shop_items` SET `pickup` = 0 WHERE `shop_id` = 123;
Снять галочку с чек-боксов "Доставка" и "Самовывоз"
UPDATE `shop_items` SET `delivery` = 0, `pickup` = 0;
UPDATE `shop_items` SET `yandex_market` = 0 WHERE `indexing` = 0;

SQL запросы для дополнительных свойств

Перенос значений свойства из property_value_strings в property_value_ints
INSERT INTO `property_value_ints` (`property_id`, `entity_id`, `value`) SELECT `property_id`, `entity_id`, `value` FROM `property_value_strings` WHERE `property_id` = 5
Добавляем свойство (в частности свойство флажок с id  13 и значением 1) для всех товаров определённого производителя. 
Если магазинов в системе несколько, то указать ID маазина 
INSERT INTO `property_value_ints`
(`property_id`, `entity_id`, `value`)
SELECT 13, `id`, 1 FROM `shop_items` WHERE `shop_producer_id` = 9;  // WHERE `shop_id` = 1 - если нужно, указать ID магазина, заменить 9 на ID нужного производителя

Установить значение "1 " для свойства с ID 555

UPDATE `property_value_ints` SET value = 1 WHERE `property_id` = 555

Удалить все значения свойства (действие отменить будет нельзя!):
- Числовое свойство:
DELETE FROM `property_value_ints` WHERE `property_id` = 123;
- Свойство с плавающей точкой:
DELETE FROM `property_value_floats` WHERE `property_id` = 123;
- Строковое свойство:
DELETE FROM `property_value_strings` WHERE `property_id` = 123;
- Текстовое свойство:
DELETE FROM `property_value_texts` WHERE `property_id` = 123;
- Дата-время:
DELETE FROM `property_value_datetimes` WHERE `property_id` = 123;

Удалить все свойства тип "Строка" с ID = 999 у всех товаров

DELETE FROM property_value_strings WHERE property_id = 999;

Удалить все свойства тип "Строчка" с ID = 998 и ID = 999 у всех товаров

DELETE FROM property_value_strings WHERE property_id IN (998,999)

Если удалили большое количество свойств (большое количество — это несколько сотен), то оптимизируем таблицу, при удалении пары десятков не имеет смысла.

OPTIMIZE TABLE property_value_strings;

Какие типы свойств к какой таблице относятся:

property_value_datetimes - "Дата [type=8]", "Дата-время [type=9]"
property_value_files - "Файл [type=2]"
property_value_floats - "Число с плавающей запятой [type=11]"
property_value_ints - "Список[type=3]", "Информационная система [type=5]", "Флажок [type=7]", "Интернет-магазин [type=12]"
property_value_strings - "Строка [type=1]", "Скрытое поле [type=10]"
property_value_texts - "Большое текстовое поле [type=4]", "Визуальный редактор [type=6]"

SQL запросы для модификаций товаров

Запрос на отключение модификаций в поиске
UPDATE `shop_items` SET `shop_items`.`indexing` = 0 WHERE `shop_items`.`modification_id` > 0 AND `shop_items`.`shop_id` = 1
Исключить модификации из результатов поиска. Cнятие индексирования со всех модификаций
Для исключения модификаций из результатов поиска выключите флаг "Индексировать" для всех модификаций и выполните переиндексацию сайта.
Отключить индексацию всех модификаций можно SQL-запросом:
UPDATE `shop_items` SET `indexing` = 0 WHERE `modification_id` > 0;
UPDATE `shop_items` SET `active` = 0 WHERE `modification_id` > 0;
после запроса переиндексировать страницы
Удаление меток у всех модификаций в магазине
DELETE tag_shop_items.* FROM tag_shop_items LEFT JOIN shop_items ON tag_shop_items.shop_item_id = shop_items.id WHERE shop_items.modification_id != "0" AND shop_items.shop_id ="3"
Удаление всех модификаций (товаров, которые модификации для других товаров)
UPDATE `shop_items` SET `deleted` = 1 WHERE `modification_id` > 0;
Удаление всех модификаций в самой базе данных
DELETE FROM `shop_items` WHERE `modification_id` > 0;
DELETE FROM `shop_items` WHERE `shop_group_id` = 0

SQL запросы для товаров

НАЗНАЧАЕМ ВАЛЮТУ ВСЕМ ТОВАРАМ
UPDATE `polyankake_hs`.`shop_items` SET `shop_currency_id` = '1' WHERE `shop_id` = 123; // вместо 123 указать ID магазина
Меняем тип товара (делимый - 2, электронный - 1, обычный - 0)
UPDATE `shop_items` SET `type` = '2'
Удалить товары
// Удаляем товары, которых нет на всех складах
UPDATE `shop_items` SET `deleted` = (
SELECT IF(SUM(`shop_warehouse_items`.`count`) = 0, 0, 0)
FROM `shop_warehouse_items` WHERE `shop_warehouse_items`.`shop_item_id` = `shop_items`.`id`
)
WHERE `shop_items`.`shop_id` = 1;  // номер магазина заменить

// Удаляем все товары из указанного магазина
UPDATE `shop_items` SET `deleted` = 1 WHERE `shop_id` = 123 // вместо 123 указать ID магазина

// Удаляем товары у которых отключена активность
UPDATE `shop_items` SET `deleted` = 1 WHERE `shop_items`.`active` = 0

UPDATE `shop_items` SET `deleted` = 1 WHERE `deleted` = 1

// Удаляем товары у которых отключена индексация
UPDATE `shop_items` SET `deleted` = 1 WHERE `shop_items`.`indexing` = 0
Убрать все сопутствующие для всех товаров
TRUNCATE TABLE `shop_item_associated`;
Установить всем товарам на складе 55 остаток в единицу
UPDATE `shop_warehouse_items` SET `count` = 1 WHERE `shop_warehouse_id` = 55;
Назначаем всем товарам количество на основном складе
UPDATE `shop_warehouse_items` SET `count` = '100'
Назначаем количество только товарам с количеством = 0
UPDATE `shop_warehouse_items` SET `count` = '999' WHERE `count` = 0;
Установить "индексировать" товарам с наличием на складе и не индексировать с нулевым остатком
UPDATE `shop_items` SET `shop_items`.`indexing` = (

SELECT IF(SUM(`shop_warehouse_items`.`count`) > 0, 1, 0)

FROM `shop_warehouse_items` WHERE `shop_warehouse_items`.`shop_item_id` = `shop_items`.`id`

)
WHERE `shop_items`.`shop_id` = 123; // вместо 123 указать ID магазина

UPDATE `shop_items` SET `shop_items`.`indexing` = 0 WHERE `shop_items`.`active` = 0

Удалить артикул у всех товаров с Артикулом

UPDATE `shop_items` SET `marking` = '' WHERE `marking` != '' AND `shop_id` = 123; // вместо 123 указать ID магазина

Добавить к названию товара какое-то слово (символ) в определённой группе

update shop_items set name = concat('Пицца ', name) where shop_group_id = 746

Добавить к названию товара какое-то слово (символ) в нескольких группах

update shop_items set name = concat('Пицца ', name) where shop_group_id IN (746, 747, 748)

Добавить к названию товара артикул в определённых группах

update shop_items set name = concat(name, ' ', marking) where shop_group_id IN (746, 747, 748)

Удалить определённый символ из названия товара

UPDATE `shop_items` SET name = REPLACE(`name`,'*','х' ) // заменяем "*" на "х"

Отключить активность всем Купонам

UPDATE `shop_purchase_discount_coupons` SET `active` = 0

Удаление значений несуществующих товаров

DELETE `property_value_strings`
FROM `property_value_strings`
LEFT JOIN `shop_items` ON `property_value_strings`.`entity_id` = `shop_items`.`id`
WHERE `shop_items`.`id` IS NULL

DELETE `shop_warehouse_items`
FROM `shop_warehouse_items`
LEFT JOIN `shop_items` ON `shop_warehouse_items`.`shop_item_id` = `shop_items`.`id` 
WHERE `shop_items`.`id` IS NULL

SELECT `shop_item_prices`.`id`, `shop_items`.`id`
FROM `shop_item_prices`
LEFT JOIN `shop_items` ON `shop_item_prices`.`shop_item_id` = `shop_items`.`id`
WHERE `shop_items`.`id` IS NULL

Выбор товаров из группы и подгруппы

SELECT `shop_items`.* 
FROM `shop_items`
JOIN `shop_groups` ON `shop_groups``.id` = `shop_items`.`shop_group_id`
	AND (`shop_groups`.`parent_id` IN (1,2) OR `shop_groups`.`id` IN (1,2))
WHERE `shop_items`.`shortcut_id` = 0 AND `shop_items`.`modification_id` = 0

Поиск дублей в MySQL

SELECT COUNT(`path`) AS `count`, `id`, `shop_group_id`, `shop_producer_id`, `name`, `active`, `path`, `deleted` FROM `shop_items` WHERE `shop_id` = 1 AND `modification_id` = 0 AND `shortcut_id` = 0 GROUP BY `path` HAVING COUNT(`path`) > 1

Установить значение "1 " для свойства с ID 555

UPDATE `property_value_ints` SET value = 1 WHERE `property_id` = 555

Удалить SEO заголовки title, description, keywords у товаров определенной группы

UPDATE `shop_items` SET `seo_title` = '', `seo_description` = '',`seo_keywords`  = '' WHERE `shop_group_id` = 123

Удаление значений свойств у товаров

Удалить все свойства тип "Строка" с ID = 999 у всех товаров

DELETE FROM property_value_strings WHERE property_id = 999;

Удалить все свойства тип "Строчка" с ID = 998 и ID = 999 у всех товаров

DELETE FROM property_value_strings WHERE property_id IN (998,999)

Если удалили большое количество свойств (большое количество — это несколько сотен), то оптимизируем таблицу, при удалении пары десятков не имеет смысла.

OPTIMIZE TABLE property_value_strings;

Какие типы свойств к какой таблице относятся:

property_value_datetimes - "Дата [type=8]", "Дата-время [type=9]"
property_value_files - "Файл [type=2]"
property_value_floats - "Число с плавающей запятой [type=11]"
property_value_ints - "Список[type=3]", "Информационная система [type=5]", "Флажок [type=7]", "Интернет-магазин [type=12]"
property_value_strings - "Строка [type=1]", "Скрытое поле [type=10]"
property_value_texts - "Большое текстовое поле [type=4]", "Визуальный редактор [type=6]"


ДОСКА ОБЪЯВЛЕНИЙ

Обнуляем дату окончания показа объявлений

UPDATE `shop_items` SET `end_datetime` = '0000-00-00 00:00:00' WHERE `shop_id` = 123; // вместо 123 указать ID магазина

SQL запросы заказов ИМ

Отметить все заказы магазина 1 как невыгруженные, чтобы повторно выгрузились в 1С, Мой Склад и т.п.
UPDATE `shop_orders` SET `unloaded` = 0 WHERE `shop_id` = 1;
Увеличить номер заказа в магазине до 1000-го 
ALTER TABLE `shop_orders` AUTO_INCREMENT =1000;

SQL запросы. Как быстро посчитать кол-во товаров

Заходим в модуль "SQL-запросы" и делаем такой запрос:
SELECT COUNT(`id`) AS `count` 
FROM `shop_items` 
WHERE `shop_id` = 1 AND `active` = 1 AND `deleted` = 0
Или так, усложняем, проверяем еще активность и удалена ли группа товара:
SELECT COUNT(`shop_items`.`id`) AS `count` 
FROM `shop_items`
LEFT JOIN `shop_groups` ON `shop_items`.`shop_group_id` = `shop_groups`.`id`
WHERE `shop_items`.`shop_id` = 1 AND `shop_items`.`active` = 1 AND `shop_items`.`deleted` = 0 AND `shop_groups`.`active` = 1 AND `shop_groups`.`deleted` = 0
Для чего мы делаем условия, да для того чтобы посчитать именно в нужном магазине (`shop_id` = 1), т.к. в системе могут быть несколько магазинов или остались старые товары от старого магазина, мы считаем только активные товары (`active` = 1) и не удаленные (`deleted` = 0), после чего будет видно кол-во
Если у Вас в магазине присутствуют модификации и нужно посчитать без них, то исключаем их:
SELECT COUNT(`id`) AS `count`
FROM `shop_items`
WHERE `shop_id` = 1 AND `modification_id` > 0 AND `active` = 1 AND `deleted` = 0
Считаем кол-во товаров у которых есть картинки:
ELECT COUNT(`id`) AS `count`
FROM `shop_items`
WHERE `shop_id` = 1 AND `image_small` != '' AND `active` = 1 AND `deleted` = 0
Считаем кол-во товаров у которых есть цены:
SELECT COUNT(`id`) AS `count`
FROM `shop_items`
WHERE `shop_id` = 1 AND `price` > 0 AND `active` = 1 AND `deleted` = 0
Считаем кол-во товаров у которых нет артикула:
SELECT COUNT(`id`) AS `count`
FROM `shop_items`
WHERE `shop_id` = 1 AND `marking` = '' AND `active` = 1 AND `deleted` = 0

SQL запросы. Ошибки в базе данных

Если при работе с базой данных через PhpMyadmin возникает ошибка "Данная таблица не содержит уникального столбца. Изменение сетки, выставление галочки, редактирование, копирование и удаление не доступно", нужно выполнить SQL запрос в базе данных 
ALTER TABLE tablename ADD newid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
Только вместо tablename необходимо поставить название проблемной таблицы (без скобок и кавычек).

SQL запросы. Разное

 Удалить все title, description, keywords
UPDATE `shop_groups` SET `description` = '', `seo_title` = '', `seo_description` = '', `seo_keywords` = '' WHERE `shop_id` = 1
Меняем path (URL) у всех элементов, делая его равным id
UPDATE `shop_items` SET `path` = `id`; - для товаров
UPDATE `informationsystem_items ` SET `path` = `id`; - для инфоэлементов
Использование HTTPS при работе с клиентским разделом
Установите SSL сертификат на сервере, далее в структуре сайта для всех разделов выберите опцию "Доступ через HTTPS". Ускорить установку всем разделам этой опции можно через SQL-запрос (123 замените на идентификатор сайта):
UPDATE `structures` SET `https` = 1 WHERE `site_id` = 123;
SQL

Запрос количества товаров только в наличии

PHP

$oQB = Core_QueryBuilder::select('shop_items.id')
   ->from('shop_items')
    ->join('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id')
    ->join('shop_warehouses', 'shop_warehouses.id', '=', 'shop_warehouse_items.shop_warehouse_id')
    ->where('shop_items.active', '=', 1)
    ->where('shop_items.deleted', '=', 0)
    ->where('shop_items.shop_id', '=', 3)
    ->where('shop_warehouses.active', '=', 1)
    ->where('shop_warehouses.deleted', '=', 0)
    ->groupBy('shop_items.id')
    ->having(Core_QueryBuilder::expression('SUM(shop_warehouse_items.count)'), '>', 0);


$oCore_QueryBuilder_Select = Core_QueryBuilder::select(array(Core_QueryBuilder::raw('COUNT(*)'), 'count'))
    ->from(array($oQB, 'x'));

$row = $oCore_QueryBuilder_Select->execute()->asObject()->current();

echo 'Сегодня в продаже ' . $row->count . ' ' . Core_Str::declensionNumber($row->count, 'товар', 'товара', 'товаров');