如果有可能,我将如何构建此查询?

时间:2016-06-13 23:16:45

标签: php mysql wordpress

所以我正面临着我正在努力的WordPress项目的挑战,我希望有人可以给我一个关于实现这一目标的最佳方法的提示。所以我在自定义帖子类型上使用高级自定义字段,我有大约10个不同的字段。我必须构建一个需要匹配高级自定义字段中的值的搜索并返回帖子ID。

自定义字段将其数据存储在wp_postmeta表中,看起来像这样:

+------------------------------------------+
|meta_id | post_id | meta_key | meta_value |
|------------------------------------------|
| 1      | 24      | state    | CA         |
| 2      | 24      | city     | Yuba City  |
| 3      | 24      | type     | Full time  |
+------------------------------------------+

(还有更多,但保持简短)。

因此,如果我的搜索字段是“状态”,“城市”和“作业类型”,并且所有三个都填写,我需要发生的是,如果所有三个元值都与搜索到的内容相匹配,则返回post_id。

我从来没有做过这样的事情,因为他们在多行中,所以我不完全确定我会怎么做。

1 个答案:

答案 0 :(得分:1)

一种方法使用聚合。一种方法使用join。例如:

select ps.post_id
from wp_postmeta ps join
     wp_postmeta pc
     on ps.post_id = pc.post_id and
        ps.meta_kay = 'state' and ps.meta_value = 'CA' and
        pc.meta_key = 'city' and pc.meta_value = 'Yuba City' join
     wp_postmeta pt
     on pt.post_id = ps.post_id and
        pt.meta_key = 'type' and pt.meta_value = 'Full time';