gpt4 book ai didi

php - 获取元键的所有唯一后元值

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

我需要检索特定元键的一组唯一元值。我从 Paul Chimoy 找到了一个函数这几乎可以满足我的需求。我只需要 1)。具有二级资格的版本,以及 2)。具有二级和三级资格的版本,以便输出我需要的内容。

该函数输出 meta_key 'trees' 和 'states' 的所有元值,但我需要能够输出,1)。 meta_key 'trees' 的所有唯一元值,其中 meta_key 'states' 等于 'california' 和 2)。 meta_key 'trees' 的所有唯一值,其中 meta_key 'states' 等于 'california' 和 meta_key 'countries' 等于 'usa'。

Trees
meta_key = trees
meta_value = pine, oak, sequoia

States
meta_key = states
meta_value = california, washington, florida

Countries
meta_key = countries
meta_value = usa, uk, ireland

没有成功,我调整了功能包括:

AND (pm.meta_key = 'states' AND pm.meta_value = 'california')

这是未经我额外限定的原始函数:

 function get_unique_post_meta_values( $key = 'trees', $type = 'post', $status = 'publish' ) {
global $wpdb;
if( empty( $key ) )
return;
$res = $wpdb->get_col( $wpdb->prepare( "
SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = '%s'
AND p.post_status = '%s'
AND p.post_type = '%s'
", $key, $status, $type ) );
return $res;
}

我有限的知识不允许我根据我的需要适本地调整功能。我感谢为实现我的目标而提供的任何帮助。

提前致谢。

最佳答案

我知道这已经过时了,您可能不会再找了,但是如果其他人需要这个,那么这里就是需要做的事情。

现在你的选择语句是:

SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = '%s'
AND p.post_status = '%s'
AND p.post_type = '%s'

这将根据一个键选择元值。

相反,您希望基于一个键获取另一个键的唯一元值。

为此,您需要选择帖子,然后根据所需的键选择其他不同的元值。这意味着您需要嵌套您的 SQL,并获取您的帖子 ID。

SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm WHERE pm.post_id IN 
(SELECT pm.post_id FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = '%s'
AND pm.meta_value = '%s'
AND p.post_status = '%s'
AND p.post_type = '%s')
AND pm.meta_key = '%s'

您的包装语句应该类似于:

$res = $wpdb->get_col( $wpdb->prepare($sql, $searchkey, $searchvalue, $poststatus, $posttype, $findkey ) );

假设您输入上面的 SQL,trees, pine, post, publish, states - 您应该检索生长松树的州的列表。

希望这对偶然发现此问题的人有所帮助!

关于php - 获取元键的所有唯一后元值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32725498/

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