当前位置: 首页 > 知识库问答 >
问题:

如何从同一列和表中搜索两个元数据

公羊晟
2023-03-14

我在WordPress中进行自定义搜索。有三个字段可供搜索。

  1. 年龄
  2. 位置
  3. 职称

wp\u帖子中搜索帖子标题

如果用户输入:

  1. 输入标题或
  2. 选择位置或
  3. 选择年龄或
  4. 输入标题并选择位置或
  5. 输入标题并选择年龄或
  6. 选择位置并选择年龄

我的前5(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%'

查询不起作用,因为我认为sever混淆了同一列中的两个值。

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%')

但它给了我这个错误

所以请指导我如何从同一列中获得两个值。

请只给我查询建议,而不是任何其他解决方案。


共有2个答案

米楚青
2023-03-14

你试试,wordpress查询

<?php 
$argsCat = array(   
    'posts_per_page'    => -1,              
    'post_type'        => 'download',
    'meta_key'         => 'y_activity_locations',
    'meta_value'       => '%Armidale%',
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'y_age',
            'value' => '3',
            'compare' => '>='
        ),
        'relation' => 'AND',
        array(
            'key' => 'y_age',
            'value' => '5',
            'compare' => '<='
        )
    ),

);  
$normal_array = get_posts($argsCat);

?>
衡泰
2023-03-14

请尝试以下查询:

    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'
        And y_meta.meta_value Like '%3 to 5%')
    )
 类似资料:
  • 我有两个清单,例如: 列表1:只有一个元素 列表2:有1000个对象 注意:矩阵是字符串集合(例如:abc,定义,ghi) 问题: 在列表1中只有1个元素,而在列表2中有1000个。我需要检查所有这1000个元素才能找到1个元素吗? 有没有更好的办法?

  • 问题内容: 上面的代码创建一个带有两个列表框的窗口。但是,如果要从这两个值中检索值,就会出现问题,因为一旦在一个值中选择一个值,它就会取消选择在另一个值中选择的值。 这仅仅是开发人员必须忍受的限制吗? 问题答案: 简短答案:将所有列表框小部件的属性值设置为False或零。 从列表框小部件的pythonware概述中: 默认情况下,选择被导出到X选择机制。如果您在屏幕上有多个列表框,这确实会使可怜的

  • 如何在MySQL中为此查询创建索引?

  • 这只适用于第一个字母“j”,只要我加上“ja”(例如,我仍然显示所有的“jonathan”)

  • 问题内容: 我有两个三个整数的对象。我想找到一种方法来返回两个列表的共同元素。有谁知道我如何实现这一目标? 问题答案: 使用。 如果要避免更改受到影响listA,则需要创建一个新的更改。

  • 我只想在数组中的第一个元素上搜索对象,而忽略其余的元素。例如,对于下面的数据,如果我只想在中搜索数组中的第一个元素。 我知道我可以这样做一个嵌套查询,但这里的问题是所有的车辆都被搜索。我只希望车辆列表中的第0个元素被搜索,其余的被忽略。 理想情况下,我需要类似这样的东西来每次搜索列表中的第一辆车。有什么方法可以有效地做到这一点吗?