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 ) |