Morozov&Pimnev blog

Полезные решения, шпаргалки и примеры по html, css, js, jQuery, MySQL, PHP, HostCMS, ssh.

Метка - sql.

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

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

...

Читать дальше →

sql, mysql, hostcms6


SQL запрос - выбор товаров из группы и подгруппы на HostCMS v6+

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

...

Читать дальше →

HostCMS, sql, mysql


Поиск дублей в 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

...

Читать дальше →

mysql, sql


SQL запрос, проставить всем узлам в структуре сайта отметку "Доступ через HTTPS" для HostCMS v6

UPDATE structures SET https = 1 WHERE site_id = 1;

...

Читать дальше →

sql, hostcms6, HostCMS, structure


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

Удалить все свойства тип "Строка" с 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, mysql, hostcms6, property


Интересная функция GROUP_CONCAT() в MySQL

GROUP_CONCAT() эта функция возвращает строку с результатом объедененных ненулевых значений (non-NULL) из группы. Возвращает значение NULL, если нет ненулевых значений.

Например у нас есть слудующие значения в таблице:

mysql> select * from users;
+----+-----------------------+------------+
| id | name                  | surname    |
+----+-----------------------+------------+
|  1 | Иван                  | Петров     |
|  2 | Иван                  | Иванов     |
|  3 | Петр                  | Первый     |
|  4 | Петр                  | Второй     |
|  5 | Семен                 | Слипаков   |
+----+-----------------------+------------+

И нам нужно узнать сколько разновидностей фамилий у имени, т.е. мы группируем по имени и объеденяем поле фамилии и получаем нужный нам результат:

mysql> SELECT name, surname GROUP_CONCAT(DISTINCT surname ORDER BY surname ASC SEPARATOR ', ') AS surname
    -> FROM users
    -> GROUP BY name;
+----+-----------------------+--------------------+
| id | name                  | surname            |
+----+-----------------------+--------------------+
|  1 | Иван                  | Иванов, Петров     |
|  2 | Петр                  | Второй, Первый     |
|  3 | Семен                 | Слипаков           |
+----+-----------------------+--------------------+

DISTINCT — позволяет выбрать уникальные значения, т.е. без дублей;
ORDER BY column ASC | DESC — позволяет сортировать данные;
SEPARATOR — позволяет разделить данные через нужный делитель, по-умолчанию это запятая без пробела (,)

...

Читать дальше →

mysql, sql


Как быстро посчитать кол-во товаров на HostCMS v6

Заходим в модуль "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), после чего будет видно кол-во

...

Читать дальше →

sql, hostcms6, shop_items


SQL запрос для поиска и замены текста, оператор REPLACE и REGEXP_REPLACE

UPDATE `ИМЯ_ТАБЛИЦЫ` set `ИМЯ_ПОЛЯ` = replace(`ИМЯ_ПОЛЯ`, 'что ищем', 'на что заменяем');

UPDATE `table_name` SET `colume_name` = REPLACE(`colume_name`, 'Слоово с ошибкой', 'Слово без ошибки');

Удалить все пробелы в поле colume_name

UPDATE `table_name` SET `colume_name` = REGEXP_REPLACE(`colume_name`, '[\\s]', '');

...

Читать дальше →

mysql, sql


Убрать индексирование всем элементам ИС через SQL запрос на HostCMS v5

UPDATE `information_items_table` SET `information_items_allow_indexation` = 0 WHERE `information_systems_id` = 5;

...

Читать дальше →

sql, hostcms5, information_systems, information_items, mysql


Снять всем товарам или определенной группе пометку экспорт в Яндекс.Маркет через SQL запрос на HostCMS v6

Для всех товаров всех магазинов

UPDATE `shop_items` SET `yandex_market` = 0;

Для всех товаров магазина с ID = 1

UPDATE `shop_items` SET `yandex_market` = 0 WHERE `shop_id` = 1;

Для всех товаров магазина с ID = 1, которые лежат в группе с ID = 2

UPDATE `shop_items` SET `yandex_market` = 0 WHERE `shop_id` = 1 AND `shop_group_id` = 2;

...

Читать дальше →

shop_items, hostcms6, sql, shop, modification_id, mysql