当前位置: 首页 > 知识库问答 >
问题:

查询所需的支持

曾山
2023-03-14

我需要帮助来完成Woocommerce产品列表的SQL查询。我需要将其用于WPDataTableSQL输入。

我搜索了一个示例代码,并修改了找到的代码:

SELECT
  p.ID,
  p.post_title,
  p.post_content,
  p.post_excerpt,
  t.name AS product_category,
  t.term_id AS product_id,
  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
FROM wp_posts p 
LEFT JOIN wp_postmeta pm1 ON pm1.post_id = p.ID
LEFT JOIN wp_term_relationships AS tr ON tr.object_id = p.ID
JOIN wp_term_taxonomy AS tt ON tt.taxonomy = 'product_cat' AND tt.term_taxonomy_id = tr.term_taxonomy_id 
JOIN wp_terms AS t ON t.term_id = tt.term_id
WHERE p.post_type in('product', 'product_variation') AND p.post_status = 'publish'
GROUP BY p.ID,p.post_title

它可以工作,但没有可变产品的产品行。它只显示产品的主要变化。

产品牛排:我有6种不同的牛排作为自己的产品,价格不同,重量也不同。通过我的SQL查询,我只能看到主产品“牛排”,没有变化和变化价格。

表wp_员额

id   | post_title                     | post_type         | post_parent | post_name | regular_price |
-----+--------------------------------+-------------------+-------------+-----------+---------------|
4113 | Steaks                         | product           | 0           |
4119 | Steaks-Lungenbraten Steak 125g | product_variation | 4113        | steaks_4  |6              |
4120 | Steaks-Hüftsteak 200g          | product_variation | 4113        | steaks_5  |4,4            |
4121 | Steaks-Flankensteak 600g       | product_variation | 4113        | steaks_6  |8,4            |

表wp_Posteta-

Post_ID |meta_key                | meta_value         |
--------+----------------+----------------------------+---------
4113    |                        | 
4119    | attribute_pa_steaks    | lungenbraten-steak |
4119    | _price.                | 6                  |
4120    | attribute_pa_steaks    | hueftsteak         |
4120    | _price.                | 4,4                |
4121    | attribute_pa_steaks    | flanksteak         |
4121    | _price.                | 8,4                |

wp_术语_关系

object_id.  | term_taxonomy_id. | term_order |
------------+-------------------+------------+
4113        |    6              |    0       |
4113        |   296             |    0       |
4113        |   297             |    0       |
4113        |   298             |    0       |

wp_术语_分类法

term_taxonomy_id. | term_id  | taxonomy    | description. | parent |count |
------------------+----------+-------------+--------------+--------+------+
296               |   296    |  pa_steaks  |              |  0     | 1.   |
297               |   297    |  pa_steaks  |              |  0     | 1.   |
298               |   298    |  pa_steaks  |              |  0     | 1.   |

wp_terms

term_id     |  name              | slug               | term_group | 
------------+--------------------+--------------------+------------+
296         | Flanksteak         | flanksteak         | 0          |
297         | Hüftsteakk         | hueftsteak         | 0          |
298         | Lungenbraten Steak | Lungenbraten-steak | 0          |

共有1个答案

苏鸿才
2023-03-14

您的查询无效,因为选择列表与分组依据不匹配。即使您的DBMS有缺陷并且没有引发错误,我也不建议使用这样的查询。它的结果可能是任意的(比如MySQL)。编写一个查询,明确您真正想要选择的数据。

因为您只需要键/值表wp_postmeta中的一个值,所以不需要聚合:

SELECT
  p.id,
  p.post_title,
  p.post_content,
  p.post_excerpt,
  t.name AS product_category,
  t.term_id AS product_id,
  tt.term_taxonomy_id AS tt_term_taxonomia,
  tr.term_taxonomy_id AS tr_term_taxonomia,
  pm1.meta_value AS price
FROM wp_posts p 
LEFT JOIN wp_postmeta pm1 ON pm1.post_id = p.ID AND pm1.meta_key = '_price'
JOIN wp_term_relationships AS tr ON tr.object_id = p.ID
JOIN wp_term_taxonomy AS tt ON tt.taxonomy = 'product_cat'
                           AND tt.term_taxonomy_id = tr.term_taxonomy_id 
JOIN wp_terms AS t ON t.term_id = tt.term_id
WHERE p.post_type in('product', 'product_variation') AND p.post_status = 'publish'
ORDER BY
  CASE WHEN p.post_parent = 0 THEN id else post_parent END,
  CASE WHEN p.post_parent = 0 THEN 1 else 2 END;
 类似资料:
  • 我的宇宙数据库每天都会更新一些数据 我的逻辑设置为24小时循环。我的问题是,如果cosmosdb中添加了任何新数据,我无法获取过去24小时的数据。我只想用“_ts”来获取最后24小时的数据。知道怎么做吗? 尝试了这个,但没有得到所需的结果。

  • 问题内容: 考虑这种情况… 我有1000美元,我想购买上面列出的东西。 我想花全部钱 因此,我需要一个查询,该查询将给出所有产品中多少单位的价格为1000 $ 有什么帮助吗? 问题答案: 这是硬编码的,几乎没有灵活性。我的系统花了2分钟才能运行。但是可能会有所帮助,如果没有,抱歉。fnGenerate_Numbers是一个表函数,它返回参数范围内的整数。 做到这一点的方法。

  • 通过 BaaS SDK 提供的 wx.BaaS.order(OBJECT) 方法, 可查询到交易的详细信息。典型的使用场景为: 调用 wx.BaaS.pay(object) 发起支付, 在成功回调中获取到 transactionID, 在要路由到新的页面时带上此 ID, 在新页面的 onLoad 方法中获取到该 ID, 从而使用此 ID 获取交易的详细信息。 OBJECT 参数说明 参数 类型 必

  • 问题内容: IE8是否不支持以下CSS媒体查询: 如果没有,替代的写作方式是什么?在Firefox中也可以正常工作。 下面的代码有问题吗? 问题答案: IE9之前的Internet Explorer版本 不支持媒体查询 。 如果您正在寻找一种 降低 IE8用户设计水平的方法,则可能会发现IE的条件注释很有用。使用此功能,可以指定特定于IE 8/7/6的样式表,该样式表将覆盖以前的规则。 例如: 这

  • 我现在在大学学习数据库,在我的项目中,我有3个表:、和 联赛(leagueId,leagueName) 团队(teamId,teamName) 具有(leagueId,teamId,year)

  • 这里是我的问题:我从amazon dynamodb api中读到,for query中的条件意味着检查列表*中的匹配元素,但为什么它返回错误:*查询键条件不受支持? aws dynamodb查询--表名Music--关键条件{“艺术家”:{“AttributeValueList”:[{“S”:“Wangdong”}、{“S”:“Acme Band”}]、“ComparisonOperator”:“