Unlike phpmyadmin there is no button in heidiSQL for import.
You need to use ‘Run SQL’ menu item.
HeidiSQL using for import large sql files.
Получить email заказов по дате woocommerce
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
select pm.meta_value /*max( CASE WHEN im.meta_key = '_product_id' and i.order_item_id = im.order_item_id THEN im.meta_value END ) as Prod_ID*/ from wp_posts as p inner join wp_postmeta as pm on p.id = pm.post_id inner join wp_woocommerce_order_items as i on p.id = i.order_id inner join wp_woocommerce_order_itemmeta as im on i.order_item_id = im.order_item_id where p.post_type = 'shop_order' AND pm.meta_key = '_billing_email' and p.post_date BETWEEN '2023-03-19 00:00:00' AND '2023-03-19 23:59:59' and p.post_status = 'wc-completed' AND i.order_item_name LIKE '%Double Chin%' group BY pm.meta_value |
ispmanager заканчивается место
По умолчанию в ispmanager для сервера баз данных mysql 5.4 параметр expire-log-days равен 0. То есть будут храниться неограниченное количество логов mysql. В конечном итоге это засоряет всю свободную память сервера. Необходимо изменить этот параметр на другое значение, например 5 дней.
Директория где хранятся логи mysql /var/lib/mysql/
Параметр меняется в настройках mysql сервера.
В случае использования сервера баз данных mysql8 (идет по умолчанию начиная с ubuntu 20.04) нужно изменять значение параметра binlog-expire-logs-seconds на значение 86400
SQL SET WHERE
1 |
UPDATE `wp_comments` SET `comment_type` = 'review' WHERE `comment_type` = 'comment' AND `comment_approved` = 1 |
неплохой сайт со всеми операторами SQL https://www.w3schools.com/sql/sql_update.asp
Изменить тип комментария для товаров:
1 2 3 4 5 6 |
UPDATE ic SET ic.comment_type = 'review' FROM in_comments AS ic INNER JOIN in_posts AS ip ON ic.comment_post_ID = ip.ID WHERE ic.comment_type = 'comment' AND ip.post_type = 'product' |
SQL запрос получения списка товаров с адресами и рейтингом
SELECT CONCAT(‘https://site.name/product/’,pm1.post_name) as PRODUCT_URL,pm1.ID as PRODUCT_ID,AVG(pm.meta_value) as AVERAGE_RATING, pm1.comment_count as COMMENT_COUNT FROM in_comments as p
INNER JOIN in_commentmeta as pm ON p.comment_ID = pm.comment_id
INNER JOIN in_posts as pm1 ON p.comment_post_ID = pm1.ID
INNER JOIN in_postmeta as pm2 ON p.comment_post_ID = pm2.post_id
WHERE p.comment_approved = 1
AND pm.meta_key = ‘rating’
AND pm1.post_type LIKE ‘product’
AND pm1.post_status LIKE ‘publish’
AND pm1.post_parent = ‘0’
AND pm2.meta_key LIKE ‘_stock_status’
group by pm1.ID desc
ORDER BY AVERAGE_RATING
DESC
Выборка из двух таблиц mysql
sql запрос для выборки адресов товаров в наличии woocommerce.
1 2 3 4 5 6 7 8 |
SELECT CONCAT("https://site.name",p.name) as 'PRODUCT URL' FROM wp_posts as p INNER JOIN wp_postmeta as pm ON p.ID = pm.post_id WHERE p.post_type LIKE 'product' AND p.post_status LIKE 'publish' AND p.post_parent = '0' AND pm.meta_key LIKE '_stock_status' AND pm.meta_value LIKE 'instock' |
Убрать нулевую sale_price
1 |
UPDATE `wp_postmeta` SET meta_value = '' WHERE meta_key = '_sale_price' AND meta_value = '0' |
Поиск определенной строки в таблице MySQL
1 |
SELECT * FROM `in_posts` WHERE `post_content` LIKE '%searching_text%' |
Замена строки в БД вордпресс
Иногда при импорте данных с одного сайта на другой в коде остаются ссылки старого сайта, которые необходимо заменить на новые. Либо название старого сайта, которое также необходимо заменить. Эту задачу можно выполнить используя плагин better searche replace. А также это можно сделать используя sql запрос с помощью phpmyadmin.
1 |
UPDATE `in_comments` SET `comment_content` = REPLACE (`comment_content`, "old site name", "new site name") |
Данный запрос изменить во всех комментариях сайта строку old site name на строку new site name.
Изменяя имя таблицы базы данных (in_comments) и поля в таблице БД (comment_content) можно производить любые замены контента в БД
Замена строки в контенте
1 |
UPDATE `in_posts` SET `post_content` = REPLACE (`post_content`, "old", "new") |
MySQL оставить рандомное количество комментариев
Перед выполнением основного запросы нужно обязательно вначале установить все комментарии как одобренные с помощью запроса
1 |
UPDATE in_comments u1 SET u1.comment_approved = 1 WHERE 1 |
И после этого сразу же выполнять основной запрос.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
SET @row_number1 = 0; SET @row_number11 = 0; SET @max_number11 = 5; SET @min_number11 = 3; UPDATE in_comments u1 SET u1.comment_approved = 0 WHERE u1.comment_ID in ( select aaa1.comment_ID from ( SELECT (@row_number1:=@row_number1 + 1) AS num1, a1.* FROM in_comments a1 order by a1.comment_post_ID, a1.comment_date desc, a1.comment_ID asc) aaa1, ( select aa1.* from (SELECT (@row_number11:=@row_number11 + 1) AS num2, a1.* FROM in_comments a1 order by a1.comment_post_ID, a1.comment_date desc, a1.comment_ID asc) aa1, (SELECT a2.* FROM in_comments a2 where a2.comment_date = (select max(ta2.comment_date) as max_date from in_comments ta2 where ta2.comment_post_ID = a2.comment_post_ID) order by a2.comment_post_ID, a2.comment_date desc, a2.comment_ID asc) aa2 where aa1.comment_ID = aa2.comment_ID and aa1.comment_post_ID = aa2.comment_post_ID ) aaa2 where aaa1.num1 >= aaa2.num2 + FLOOR(RAND() * (@max_number11 - @min_number11 + 1)) + @min_number11 and aaa1.comment_post_ID = aaa2.comment_post_ID ) |