2013-09-19 3 views
0

У меня есть много пользовательских полей - цена, вес и т.д. ............Advanced Mysql над Wordpress Пользовательские поля

Теперь я пытаюсь создать пользовательский поиск, основанный на том, что я хочу поиск по минимальному & максимуму ... Как-то я не могу создать точный запрос ......... будет оценить чью-то помощь по этому ..

Вот запрос я пытаюсь

$where = ""; 
if (isset($_POST['pricemin']) && $_POST['pricemin'] != "") { 
    $pricemin = $_POST['pricemin']; 
    $where .= " and (SELECT post_id from wp_postmeta where meta_key='list_price' and meta_value > ".$pricemin.$order.") "; 
} 
if (isset($_POST['pricemax']) && $_POST['pricemax'] != "") { 
    $pricemax = $_POST['pricemax']; 
    $where .= " and (SELECT post_id from wp_postmeta where meta_key='list_price' and meta_value < ".$pricemax.$order.") "; 
} 

и вот окончательная строка ..

"SELECT * from wp_posts where ID IN (select 1 from wp_postmeta ".$where.")" 

Любые предложения по UNION, пересекаться и т.д., или лучший способ сделать это .......... Спасибо

На самом деле MySQL Между решает половину моей проблемы ...... смогу написать все это, как

if (isset($_POST['pricemin']) && $_POST['pricemin'] != "") { 
    $pricemin = $_POST['pricemin']; 
    $wherep1= " (SELECT post_id from wp_postmeta where meta_key='list_price' and meta_value > ".$pricemin.$order.") "; 
} 
if (isset($_POST['pricemax']) && $_POST['pricemax'] != "") { 
    $pricemax = $_POST['pricemax']; 
    $wherep1 = " (SELECT post_id from wp_postmeta where meta_key='list_price' and meta_value < ".$pricemax.$order.") "; 
} 
if (isset($_POST['pricemin']) && $_POST['pricemin'] != "" && isset($_POST['pricemax']) && $_POST['pricemax'] != "") { 
    $pricemin = $_POST['pricemin']; 
    $pricemax = $_POST['pricemax']; 
    $wherep1 = " (SELECT post_id from wp_postmeta where meta_key='list_price' and meta_value BETWEEN ".$pricemin." and ".$pricemax ." ".$order.") "; 
} 

Но я хочу, чтобы искать по весу, высота слишком ..............

так, что-то вроде Intersect мог бы помочь мне. . Но я вижу, что MYSQL не поддерживает INTERSECT ........ Итак, остается вопрос, как переписать запрос

INTERSECT B ПЕРЕСЕЧЕНИЕ C ПЕРЕСЕЧЕНИЕ D в MySQL

ответ

-1

получил ответ .....

SELECT * from wp_posts where ID IN ((SELECT post_id from wp_postmeta where meta_key='list_price' and meta_value BETWEEN 1 and 1229000)) and id in (SELECT post_id from wp_postmeta where meta_key='weight' and meta_value BETWEEN 20 and 200) 

Использование Между & И Оговорки!

0

Изменить окончательный запрос к этому:

"SELECT * from wp_posts where ID IN (select post_id from wp_postmeta ".$where.")" 
Смежные вопросы