获取WooCommerce中没有特定分类的产品列表

问题描述 投票:1回答:1

我遇到了一个问题,试图在拥有数万种产品的网站上找出哪些产品缺少供应商。

我需要一个MySQL查询来确定哪些产品通过phpmyadmin缺少分类标准“供应商”。

到目前为止,我已经从各种答案中拼凑出来:

SELECT *
FROM wp_posts wp
INNER JOIN wp_postmeta wm ON (wm.`post_id` = wp.`ID`)
INNER JOIN wp_term_relationships wtr ON (wp.`ID` = wtr.`object_id`)
INNER JOIN wp_term_taxonomy wtt ON (wtr.`term_taxonomy_id` = wtt.`term_taxonomy_id`)
INNER JOIN wp_terms wt ON (wt.`term_id` = wtt.`term_id`)
AND wtt.`taxonomy` = 'suppliers'
WHERE post_type = 'product'
GROUP BY wp.ID

我尝试了很多东西,无法让它发挥作用。

mysql wordpress woocommerce phpmyadmin product
1个回答
1
投票

问题是你的查询是你不排除产品有suppliers该产品有一些其他属性,所以你可以使用NOT EXISTNOT IN,我已经使用NOT EXIST编写了查询。

SELECT *
FROM wp_posts wp
INNER JOIN wp_postmeta wm ON wm.`post_id` = wp.`ID`
INNER JOIN wp_term_relationships wtr ON (wp.`ID` = wtr.`object_id`)
INNER JOIN wp_term_taxonomy wtt ON wtr.`term_taxonomy_id` = wtt.`term_taxonomy_id`
INNER JOIN wp_terms wt ON wt.`term_id` = wtt.`term_id`
WHERE post_type = 'product'
  AND NOT EXISTS
    (SELECT `object_id`
     FROM `wp_term_relationships` AS wtr_inner 
     WHERE `term_taxonomy_id` IN
         (SELECT term_taxonomy_id
          FROM `wp_term_taxonomy`
          WHERE `taxonomy` = 'suppliers')
       AND wtr.object_id = wtr_inner.object_id )
GROUP BY wp.ID

另一个版本,如果你知道所有的suppliers term_taxonomy_id会更快一点所以你可以修改上面的查询为

SELECT *
FROM wp_posts wp
INNER JOIN wp_postmeta wm ON wm.`post_id` = wp.`ID`
INNER JOIN wp_term_relationships wtr ON (wp.`ID` = wtr.`object_id`)
INNER JOIN wp_term_taxonomy wtt ON wtr.`term_taxonomy_id` = wtt.`term_taxonomy_id`
INNER JOIN wp_terms wt ON wt.`term_id` = wtt.`term_id`
WHERE post_type = 'product'
  AND NOT EXISTS
    (SELECT `object_id`
     FROM `wp_term_relationships` AS wtr_inner 
     WHERE `term_taxonomy_id` IN (27,28,29) -- replace it will all suppliers term_taxonomy_id
       AND wtr.object_id = wtr_inner.object_id )
GROUP BY wp.ID

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.