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á%';