我处于需要以下信息的情况:
ID(posts.ID)
标题(posts.title)
SKU(postmeta.metakey ='_sku')->存储在(postmeta.metavalue)中的值
PRICE(postmeta.metakey ='regular_price')->存储在(postmeta.metavalue)中的值
品牌(terms.name,WHERE term_taxonomy_term.taxonomy =“ product_cat”)
类别(terms.name,WHERE term_taxonomy_term.taxonomy =“品牌”)SKU
和PRICE
属于同一列“ postemeta.metakey”,其相关值位于“ postemeta.metavalue”中。BRAND
和CATEGORY
属于同一列“ terms.name”,但它们在“ term_taxonomy.taxonomy”中定义了不同的分类法,分别为(“ product_brand”和“ product_cat”)。
通过在下面的查询中进行开发,我能够收集除BRAND
(terms.name)之一之外的所有信息。
SELECT p.ID
, MAX(CASE WHEN pm1.meta_key = '_sku'
THEN pm1.meta_value
ELSE NULL END) AS sku
, p.post_title
, t.name AS product_category
, MAX(CASE WHEN pm1.meta_key = '_price'
THEN pm1.meta_value
ELSE NULL END) AS price
FROM mg_posts p
LEFT JOIN mg_postmeta AS pm1
ON pm1.post_id = p.ID
LEFT JOIN mg_term_relationships AS tr
ON tr.object_id = p.ID
JOIN mg_term_taxonomy AS tt
ON tt.taxonomy = 'product_cat' AND tt.term_taxonomy_id = tr.term_taxonomy_id
JOIN mg_terms AS t
ON t.term_id = tt.term_id
WHERE p.post_type IN ('product', 'product_variation')
GROUP BY p.ID, p.post_title
对解决此问题有帮助吗?
最佳答案
Philipxy,我认为最好是循序渐进,专注于这个问题。
类别和品牌的存储方式相同:
TERMS TERM_TAXONOMY TERM_RELATIONSHIP PRODUCT
---------------------------------------------------------------------------
term_id ----> term_id product_id ---> product_id
name †erm_taxonomy_id --> term_taxonomy_id
taxonomy
在term.taxonomy.taxonomy中将品牌和类别标识为“ product_brand”和“ product_cat”,其名称存储在term.term_id中。
现在的任务是在单独的列中获取结果
|ProductID | Brand | Category |
---------------------------------------------
| 001 | Levis | Men Jeans |
解决此问题后,我将继续研究此事。