gpt4 book ai didi

mysql - 查询以选择匹配条件语句中所有帖子元字段的行数(帖子)

转载 作者:行者123 更新时间:2023-11-28 23:08:55 30 4
gpt4 key购买 nike

我正在使用 YITH Woocommerce 订阅的免费版本,让我的 Wordpress 网站的用户能够在订阅的基础上购买产品。当用户购买订阅时,会发生几件事。为订单创建了一个新帖子,为订单创建了一个新订阅,并且订单和订阅都添加了各种帖子元。我关心的是检查用户是否有效订阅了我的某个产品 ID 为“432”的产品。

这是数据库中记录的示例:

post_meta 表

post_id: 468
meta_key: _product_id
meta_value: 432

post_id: 468
meta_key: _user_id
meta_value: 1

post_id: 468
meta_key: _status
meta_value: active

上面的示例显示 ID 为“1”的用户有一个“事件”订阅,即产品“432”的订阅“468”。

我不确定如何形成一个查询来检查当前登录的用户是否有效订阅了产品 432,因为数据没有存储在一行中。


编辑:根据 James 的回答,我能够更新我的查询并获得以下结果。但是,我无法运行成功的 where/having 子句。当我添加 where 或 having 子句时,查询返回空。

新查询:

SELECT post_id,
GROUP_CONCAT(IF(meta_key='_product_id', meta_value,'') SEPARATOR '') product_id,
GROUP_CONCAT(IF(meta_key='_status', meta_value,'') SEPARATOR '') status,
GROUP_CONCAT(IF(meta_key='_user_id', meta_value,'') SEPARATOR '') user
FROM wprq_postmeta
GROUP BY post_id
ORDER BY post_id DESC

结果:

Array
(
[0] => Array
(
[post_id] => 471
[product_id] =>
[status] =>
[user] =>
)
[1] => Array
(
[post_id] => 468
[product_id] => 432
[status] => active
[user] => 1
)
[2] => Array
(
[post_id] => 465
[product_id] => 432
[status] => active
[user] => 2
)
[3] => Array
(
[post_id] => 499
[product_id] =>
[status] =>
[user] =>
)
)

在上面的结果集中,我只想要“status = 'active' AND product_id = 432 AND user = 1”的结果


编辑 2: 我认为 having 子句的位置很重要。我最初在 group by 子句之前有 having 子句,但得到的结果集是空的。当我在 group by 子句之后移动 having 子句时,它起作用了。

最佳答案

这是一个方法,如果您有任何本地问题,请告诉我,

CREATE TABLE post_meta(post_id INT, meta_key CHAR(32), meta_value CHAR(32));

INSERT INTO post_meta VALUES
(468, '_product_id', 432),
(468, '_user_id', 1),
(468, '_status', 'active'),
(469, '_product_id', 432),
(469, '_user_id', 1),
(469, '_status', 'active');

SELECT post_id, GROUP_CONCAT(IF(meta_key='_product_id', meta_value,'') SEPARATOR '') _product_id, GROUP_CONCAT(IF(meta_key='_status', meta_value,'') SEPARATOR '') _status FROM post_meta WHERE post_id = 468 AND meta_key IN ('_product_id', '_status') GROUP BY post_id;

问候,

詹姆斯

关于mysql - 查询以选择匹配条件语句中所有帖子元字段的行数(帖子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46477687/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com