MySql 仅为多个评论匹配获取 WooCommerce 订单 ID
MySql Get WooCommerce order IDs only for multiple comment match
我需要查询 returns 在评论中提到的特定单词的订单 ID。我有三个单独的查询,然后我想合并为一个。所以结果将是我只会在特定日期后获得订单 ID,并且只有当他们在评论中有超过 2 个匹配搜索字符串时。
我如何将它们连接在一起?
首先查询获取特定日期后的订单 ID
SELECT ID FROM `wp_posts` WHERE `post_date` > '2022-02-01 10:14:50' AND `post_status` = 'wc-completed' AND `post_type` = 'shop_order'
其次,return仅当评论包含搜索字符串时才显示 ID
SELECT comment_post_ID FROM `wp_comments` WHERE `comment_post_ID` in ( SELECT ID FROM `wp_posts` WHERE `post_date` > '2022-02-01 10:14:50' AND `post_status` = 'wc-completed' AND `post_type` = 'shop_order') AND `comment_content` LIKE '%searched string%'
第三个 return ID,仅当订单至少有 2 条带有搜索字符串的评论时
SELECT comment_post_ID FROM `wp_comments` WHERE `comment_post_ID` = 466416 AND `comment_content` LIKE '%searched string%' having count(*) > 1
第四,前三者结合起来行不通
SELECT * FROM `wp_comments` WHERE `comment_post_ID` in ( SELECT ID FROM `wp_posts` WHERE `post_date` > '2022-02-01 10:14:50' AND `post_status` = 'wc-completed' AND `post_type` = 'shop_order' GROUP BY `comment_post_ID`) AND `comment_content` LIKE '%searched string%' having count(*) > 1
尝试构建您的 SQL 以便于阅读;
SELECT C.*
FROM wp_comments AS C
JOIN wp_posts AS P ON P.ID = C.comment_post_ID
WHERE
P.post_date > '2022-02-01 10:14:50' AND
P.post_status = 'wc-completed' AND
P.post_type = 'shop_order' AND
C.comment_content LIKE '%na Nová%' //Used stock in my search
having count(*) > 1
子查询怎么样?
SELECT a.*
FROM wp_comments AS a
WHERE a.comment_post_ID IN (
SELECT b.ID
FROM wp_posts AS b
JOIN wp_comments AS c ON b.ID = c.comment_post_ID
WHERE b.post_date > '2022-02-01 10:14:50'
AND b.post_status = 'wc-completed'
AND b.post_type = 'shop_order'
AND c.comment_content LIKE '%na Nová%'
GROUP BY b.ID
HAVING COUNT(*) >= 2
)
AND a.comment_content LIKE '%na Nová%';
我需要查询 returns 在评论中提到的特定单词的订单 ID。我有三个单独的查询,然后我想合并为一个。所以结果将是我只会在特定日期后获得订单 ID,并且只有当他们在评论中有超过 2 个匹配搜索字符串时。 我如何将它们连接在一起?
首先查询获取特定日期后的订单 ID
SELECT ID FROM `wp_posts` WHERE `post_date` > '2022-02-01 10:14:50' AND `post_status` = 'wc-completed' AND `post_type` = 'shop_order'
其次,return仅当评论包含搜索字符串时才显示 ID
SELECT comment_post_ID FROM `wp_comments` WHERE `comment_post_ID` in ( SELECT ID FROM `wp_posts` WHERE `post_date` > '2022-02-01 10:14:50' AND `post_status` = 'wc-completed' AND `post_type` = 'shop_order') AND `comment_content` LIKE '%searched string%'
第三个 return ID,仅当订单至少有 2 条带有搜索字符串的评论时
SELECT comment_post_ID FROM `wp_comments` WHERE `comment_post_ID` = 466416 AND `comment_content` LIKE '%searched string%' having count(*) > 1
第四,前三者结合起来行不通
SELECT * FROM `wp_comments` WHERE `comment_post_ID` in ( SELECT ID FROM `wp_posts` WHERE `post_date` > '2022-02-01 10:14:50' AND `post_status` = 'wc-completed' AND `post_type` = 'shop_order' GROUP BY `comment_post_ID`) AND `comment_content` LIKE '%searched string%' having count(*) > 1
尝试构建您的 SQL 以便于阅读;
SELECT C.*
FROM wp_comments AS C
JOIN wp_posts AS P ON P.ID = C.comment_post_ID
WHERE
P.post_date > '2022-02-01 10:14:50' AND
P.post_status = 'wc-completed' AND
P.post_type = 'shop_order' AND
C.comment_content LIKE '%na Nová%' //Used stock in my search
having count(*) > 1
子查询怎么样?
SELECT a.*
FROM wp_comments AS a
WHERE a.comment_post_ID IN (
SELECT b.ID
FROM wp_posts AS b
JOIN wp_comments AS c ON b.ID = c.comment_post_ID
WHERE b.post_date > '2022-02-01 10:14:50'
AND b.post_status = 'wc-completed'
AND b.post_type = 'shop_order'
AND c.comment_content LIKE '%na Nová%'
GROUP BY b.ID
HAVING COUNT(*) >= 2
)
AND a.comment_content LIKE '%na Nová%';