使用一个SQL查询,我希望获得具有产品SKU和产品标签ID、产品标签名称(但不是产品类别)的所有产品.

我try 了以下代码,但我不知道如何查询产品标签ID和产品标签名称:

SELECT 
 p.ID,
 p.post_title,
 `post_content`,
 `post_excerpt`,
 t.name AS product_category,
 t.term_id AS product_id,
 t.slug AS product_slug,
 t.name,
 tt.term_taxonomy_id AS tt_term_taxonomia,
 tr.term_taxonomy_id AS tr_term_taxonomia,
 MAX(CASE WHEN pm1.meta_key = '_price' then pm1.meta_value ELSE NULL END) as price,
 MAX(CASE WHEN pm1.meta_key = '_regular_price' then pm1.meta_value ELSE NULL END) as    regular_price,
 MAX(CASE WHEN pm1.meta_key = '_sale_price' then pm1.meta_value ELSE NULL END) as sale_price,
MAX(CASE WHEN pm1.meta_key = '_sku' then pm1.meta_value ELSE NULL END) as sku 
FROM uzn2_posts p 
LEFT JOIN uzn2_postmeta pm1 ON pm1.post_id = p.ID
LEFT JOIN uzn2_term_relationships AS tr ON tr.object_id = p.ID
JOIN uzn2_term_taxonomy AS tt ON tt.taxonomy = 'product_cat' AND tt.term_taxonomy_id = tr.term_taxonomy_id 
JOIN uzn2_terms AS t ON t.term_id = tt.term_id
WHERE p.post_type in('product', 'product_variation') AND p.post_status = 'publish' AND    p.post_content <> ''
GROUP BY p.ID,p.post_title

推荐答案

产品变体不处理任何自定义分类,如类别、标签、属性.

产品标签的分类只有product_tag.

在下面的SQL查询中,您将获得产品ID、sku、标记名和ID (replace "wp_" from the table names with the correct table index if needed):

SELECT p.ID AS product_id,
pm.meta_value AS product_sku,
t.name AS tag_name,
t.term_id AS tag_id
FROM wp_posts p 
LEFT JOIN wp_postmeta pm ON pm.post_id = p.ID
LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id 
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id 
JOIN wp_terms t ON tt.term_id = t.term_id
WHERE p.post_type = 'product' 
AND p.post_status = 'publish'
AND pm.meta_key = '_sku'
AND tt.taxonomy = 'product_tag'

对于产品变体类型,请使用(where we get the product tag name and ID from the parent variable product):

SELECT p.ID AS product_id,
pm.meta_value AS product_sku,
t.name AS tag_name,
t.term_id AS tag_id
FROM wp_posts p 
LEFT JOIN wp_postmeta pm ON pm.post_id = p.ID
LEFT JOIN wp_term_relationships tr ON p.post_parent = tr.object_id 
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id 
JOIN wp_terms t ON tt.term_id = t.term_id
WHERE p.post_type = 'product_variation' 
AND p.post_status = 'publish'
AND pm.meta_key = '_sku'
AND tt.taxonomy = 'product_tag'

注意:只有带有产品标签的产品才会列出.

Sql相关问答推荐

使用SQL/R循环查找邻居

如何通过比较不同表中相同ID S的值来筛选ID为S的列表?

如何在PostgreSQL中的一列中添加两个文本?

我可以在SQL的IN子句中使用比子查询包含的值更少的值吗?

IF NOT EXISTS子查询的性能瓶颈

使用SQL数据库中的现有列派生或修改几个列

比较SQL中以逗号分隔的字符串

group-by-clause具有特定列,而不是oracle的toad中的all

将 json 列键映射到第二个表中的匹配列值

PostgreSQL:从多个字段收集特定指标的最后一个条目

SQL Select 字母范围没有给我任何东西

将空 JSON 数组添加到 SQL Server 表列中的 JSON 字符串

SQL 如何根据当前事件和下一个事件确定操作的持续时间?

如何从一张表中获取值在至少三行相同的记录

函数调用作为插入值语句中的参数

连续期间的缺口

如何对 SQL 表中的连续时间戳进行分组?

在 BigQuery 数据集中查找表大小和占总数据集大小的百分比

使用 json_agg 从 SQL 查询获取 [null] 响应

从 Pyspark 转换为具有多个分组条件的语句时的情况