【发布时间】:2016-03-21 11:26:44
【问题描述】:
我在 WordPress 中进行自定义搜索。共有三个搜索字段。
- 年龄
- 位置
- 帖子标题
帖子标题是从wp_posts > post_title 字段搜索的,位置和年龄是自定义元字段y_age, y_activity_locations。所以有6种搜索场景。
如果用户输入:
- 输入标题或
- 选择位置或
- 选择年龄或
- 输入标题并选择位置或
- 输入标题并选择年龄或
- 选择位置并选择年龄
我的前 5(五)个场景运行良好,但我的第 6 个场景无法运行,因为它来自同一张表 (wp_postmeta) 和同一列,但有两个不同的值。
所以我尝试了这个查询:
Select y_posts.*, y_meta.*
From wp_posts As y_posts
Inner Join wp_postmeta As y_meta
On y_posts.ID = y_meta.post_id
Where y_posts.post_type = 'download'
And y_posts.post_status = 'publish'
And y_meta.meta_key = 'y_activity_locations'
And y_meta.meta_value Like '%Armidale%'
And y_meta.meta_key = 'y_age'
And y_meta.meta_value Like '%3 to 5%'
查询不起作用,因为我认为服务器混淆了同一列中的两个值。
Select y_posts.*, y_meta.*
From wp_posts As y_posts
Inner Join wp_postmeta As y_meta
On y_posts.ID = y_meta.post_id
Where y_posts.post_type = 'download'
And y_posts.post_status = 'publish'
And y_meta.meta_key = 'y_activity_locations'
And y_meta.meta_value Like '%Armidale%'
Or y_meta.meta_key = 'y_age'
Or y_meta.meta_value Like '%3 to 5%'
这个查询有效,它只给我年龄或位置数据,但我想同时搜索这两个值。
我也尝试过子查询(以前从未尝试过)
Select y_posts.*, y_meta.*
From wp_posts As y_posts
Inner Join wp_postmeta As y_meta
On y_posts.ID = y_meta.post_id
Where y_posts.post_type = 'download'
And y_posts.post_status = 'publish'
And y_meta.meta_key = 'y_activity_locations'
And y_meta.meta_value Like '%Armidale%'
And (Select yy_meta.* From wp_postmeta As yy_meta Where yy_meta.meta_key = 'y_age'
And yy_meta.meta_value Like '%3 to 5%')
但它给了我这个错误
1241 - 操作数应包含 1 列
所以请指导我如何从同一列中获取两个值。
请只给我查询建议而不是任何其他解决方案。
【问题讨论】:
-
如果你只想要查询建议,那你为什么要用 php 标记它?
-
我的意思是没有插件建议