我想从2个WP表中选择“名称”,“ SKU”和“价格”:wp_posts和wp_postmeta。我不知道如何两次从'meta_value'列获取数据,例如'meta_key'='_ price'和'meta_key'='_ sku'。 https://www.screenpresso.com/=Fg1Ud
我需要使用一些库将产品名称,SKU和价格导出到一个CSV文件。该库使用PDO连接,并且需要SQL查询。我当前的查询:
"SELECT a.post_title, m1.meta_value, m2.meta_value FROM wp_posts a, wp_postmeta m1, wp_postmeta m2
WHERE a.post_type='product' AND m1.post_id = a.ID
AND m1.meta_key='_sku'
AND m2.meta_key='_price'"
听起来您可以使用联接,因此您可以将元信息与正确的帖子相关联。
SELECT
post.post_title,
meta.meta_value
FROM wp_posts AS post
LEFT JOIN wp_postmeta AS meta
ON post.post_id = meta.post_id
WHERE post.post_type = 'product'
AND meta.meta_key IN ('_sku', '_price')
这假设wp_posts
中的id列为post_id
。
重要的是,每个帖子最多返回两行,这取决于它是否具有_sku
和_price
的元行。如果您需要将数据全部放在同一行中(可能需要进行导出),则可能需要这样的内容:
SELECT
post.post_title,
metaSku.meta_value AS sku,
metaPrice.meta_value AS price
FROM wp_posts AS post
LEFT JOIN (
SELECT
*
FROM wp_postmeta
WHERE meta_key = '_sku'
) AS metaSku
ON post.post_id = metaSku.post_id
LEFT JOIN (
SELECT
*
FROM wp_postmeta
WHERE meta_key = '_price'
) AS metaPrice
ON post.post_id = metaPrice.post_id
WHERE post.post_type = 'product'