gpt4 book ai didi

php - 定制的 SQL 查询——访问基于 2 个(或更多)postmeta 字段的记录

转载 作者:行者123 更新时间:2023-11-29 06:32:16 25 4
gpt4 key购买 nike

我在 Wordpress 上运行一个站点,我试图从基于 2 个(或更多)字段的 postmeta 表中获取信息。到目前为止,这是我的查询:

SELECT wp_postmeta.* FROM wp_postmeta
LEFT JOIN wp_posts ON wp_posts.ID = wp_postmeta.post_id
WHERE wp_posts.post_status = 'publish'
AND wp_posts.post_type = 'post'
AND ( wp_postmeta.meta_key = 'relevantLine' AND wp_postmeta.meta_value = '339' )
AND (
( wp_postmeta.meta_key = 'brandOne' AND wp_postmeta.meta_value = '30' )
OR ( wp_postmeta.meta_key = 'brandTwo' AND wp_postmeta.meta_value = '30' )
OR ( wp_postmeta.meta_key = 'brandThree' AND wp_postmeta.meta_value = '30' )
)
AND wp_posts.post_date >= '2014-03-25'
AND wp_posts.post_date <= '2014-11-27'
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC

我正在尝试访问将 postmeta 键“relevantLine”设置为 339 且将 postmeta 键“brandOne”设置为 30(或“brandTwo”设置为 30,或“brandThree”设置为 30)的记录。

有人知道怎么做吗?

上述查询无效。

非常感谢

附言。我知道我可以使用 wp 查询功能,但如果可能,我想以这种方式运行查询。

最佳答案

你可以重写你的如下

SELECT m.* ,m1.*
FROM wp_postmeta m
JOIN wp_posts p ON p.ID = m.post_id
JOIN wp_postmeta m1 ON p.ID = m1.post_id
WHERE p.post_status = 'publish'
AND p.post_type = 'post'
AND m.meta_key = 'relevantLine' AND m.meta_value = '339'
AND m1.meta_key IN ('brandOne','brandThree','brandTwo')
AND m1.meta_value = '30'
AND p.post_date >= '2014-03-25'
AND p.post_date <= '2014-11-27'
GROUP BY p.ID
ORDER BY p.post_date DESC

这个结构调用EAV实体属性值和不同键之间的匹配你必须加入表作为你想要比较的不同键,我只添加了一个连接到 wp_postmeta 并且对于单个值的键是 30 我使用了 IN( ) 以简化您的查询。

Note Using GROUP BY without any aggregate function will give you indeterminate results

关于php - 定制的 SQL 查询——访问基于 2 个(或更多)postmeta 字段的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27184936/

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