从meta键列中获取2个meta值

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

我想从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'"
mysql wordpress
1个回答
0
投票

听起来您可以使用联接,因此您可以将元信息与正确的帖子相关联。

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'
© www.soinside.com 2019 - 2024. All rights reserved.