php - 复杂的元查询不起作用

标签 php mysql wordpress

我有非常复杂的元查询,分为两部分。每个部分都可以单独正常工作,但是当我将两个部分与或进行比较时,它应该显示两个结果的组合,但没有显示任何结果。

第一个片段

array(
    'relation'      => 'AND',
    array(
        'relation'      => 'AND',
        array(
            'key'       => 'range1_min',
            'value'     => floatval($_GET['m']),
            'type'      => 'DECIMAL',
            'compare'   => '<='
        ),
        array(
            'key'       => 'range1_max',
            'value'     => floatval($_GET['m']),
            'type'      => 'DECIMAL',
            'compare'   => '>='
        )
    ),
    array(
        'relation'      => 'AND',
        array(
            'key'       => 'range1_min',
            'value'     => floatval($_GET['n']),
            'type'      => 'DECIMAL',
            'compare'   => '<='
        ),
        array(
            'key'       => 'range1_max',
            'value'     => floatval($_GET['n']),
            'type'      => 'DECIMAL',
            'compare'   => '>='
        )
    )
);


第二段

array(
    'relation'      => 'AND',
    array(
        'relation'      => 'AND',
        array(
            'key'       => 'range2_min',
            'value'     => floatval($_GET['m']),
            'type'      => 'DECIMAL',
            'compare'   => '<='
        ),
        array(
            'key'       => 'range2_max',
            'value'     => floatval($_GET['m']),
            'type'      => 'DECIMAL',
            'compare'   => '>='
        )
    ),
    array(
        'relation'      => 'AND',
        array(
            'key'       => 'range2_min',
            'value'     => floatval($_GET['n']),
            'type'      => 'DECIMAL',
            'compare'   => '<='
        ),
        array(
            'key'       => 'range2_max',
            'value'     => floatval($_GET['n']),
            'type'      => 'DECIMAL',
            'compare'   => '>='
        )
    )
);


个别地,它们都工作正常,但是当我将它们与“ OR”条件组合在一起时,它们将无法工作。

完整代码段

array(
    'relation'      => 'OR',
    array(
        'relation'      => 'AND',
        array(
            'relation'      => 'AND',
            array(
                'key'       => 'range1_min',
                'value'     => floatval($_GET['m']),
                'type'      => 'DECIMAL',
                'compare'   => '<='
            ),
            array(
                'key'       => 'range1_max',
                'value'     => floatval($_GET['m']),
                'type'      => 'DECIMAL',
                'compare'   => '>='
            )
        ),
        array(
            'relation'      => 'AND',
            array(
                'key'       => 'range1_min',
                'value'     => floatval($_GET['n']),
                'type'      => 'DECIMAL',
                'compare'   => '<='
            ),
            array(
                'key'       => 'range1_max',
                'value'     => floatval($_GET['n']),
                'type'      => 'DECIMAL',
                'compare'   => '>='
            )
        )
    ) ,
    array(
        'relation'      => 'AND',
        array(
            'relation'      => 'AND',
            array(
                'key'       => 'range2_min',
                'value'     => floatval($_GET['m']),
                'type'      => 'DECIMAL',
                'compare'   => '<='
            ),
            array(
                'key'       => 'range2_max',
                'value'     => floatval($_GET['m']),
                'type'      => 'DECIMAL',
                'compare'   => '>='
            )
        ),
        array(
            'relation'      => 'AND',
            array(
                'key'       => 'range2_min',
                'value'     => floatval($_GET['n']),
                'type'      => 'DECIMAL',
                'compare'   => '<='
            ),
            array(
                'key'       => 'range2_max',
                'value'     => floatval($_GET['n']),
                'type'      => 'DECIMAL',
                'compare'   => '>='
            )
        )
    )
);


任何帮助将不胜感激。

最佳答案

当我生成wordpress的sql查询并在phpmyadmin上运行时,它生成错误,并说我超出了默认的联接设置,这意味着在我的查询中我有太多的联接。

我已通过手动将此sql查询放在我的wordpress查询之前解决了此错误。

global $wpdb
$wpdb->query("SET SQL_BIG_SELECTS = 1");

关于php - 复杂的元查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31367800/

相关文章:

php - 将子域重定向到包含 CakePHP 应用程序的主目录中的文件夹

php - 怎么把PDO查询转换成Yii查询?

mysql - MySQL语句中的语法错误,无用的错误消息

php - 如何删除另一个div中的唯一div标签

MySQL - 对于父表中的每条记录,只需要根据子表中的日期/时间列获取最新数据

mysql - 如何将值传递给hibernate的sqlRestriction?

php - 将表单的值发送到重力表单的隐藏字段

html - WordPress中的html转换表太宽,不适合全 Angular 页面模板

php - 网站移动后后端的WordPress帖子/页面内容为空白

php - 处理mysql中的特殊字符