复杂的元查询不起作用

时间:2015-07-12 12:33:27

标签: 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'   => '>='
            )
        )
    )
);

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

我已经通过在wordpress查询之前手动输入此sql查询来解决此错误。

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