到目前为止,我有这个查询:
if(!empty($_SESSION['s_property_region'])) {
$sqlWHERE .= " AND $wpdb->postmeta.meta_key = 'property_region' AND $wpdb->postmeta.meta_value = '".$_SESSION['s_property_region']."'";
}
if(!empty($_SESSION['s_property_bedrooms'])) {
$sqlWHERE .= " AND $wpdb->postmeta.meta_key = 'property_bedrooms' AND $wpdb->postmeta.meta_value = '".$_SESSION['s_property_bedrooms']."'";
}
$sql = "SELECT $wpdb->posts.ID
FROM $wpdb->posts
LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id)
WHERE $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'property'
".$sqlWHERE."
ORDER BY $wpdb->posts.post_date DESC";
如果我只搜索一个自定义字段而不是两个一起搜索,它会起作用。我知道为什么,因为 LEFT Join 的工作方式。不会有 post_type 可以同时是两件事的行。
加入后我会得到这样的结构:
| 身份证 | 元密钥 | 元值 | | 1 | property_region | 东 | | 1 | property_卧室 | 4 | | 2 | property_region | 西 | | 2 | property_卧室 | 2 |
是否有一个查询可以将这两个表变成这样的结构:
| 身份证 | property_region | property_卧室 | | 1 | 东 | 4 | | 2 | 西 | 2 |
如果查询可以使表格看起来像上面那样,那么我的简单 WHERE this=that AND this=that 将起作用。
非常感谢您对此事的任何帮助
谢谢
斯科特
编辑:经过一番搜索后,我现在将这段代码放在一起: http: //pastebin.com/5YYDLyeR它可以工作并返回我所追求的结构,但是一旦我尝试在 property_region 和 property_bedrooms 上做一个 WHERE 我得到:# 1054 - 'where 子句'中的未知列'property_bedrooms'
EDIT2:好的,我已经采用了 PMV 代码并且能够执行我的 WHERE 子句,我必须执行子查询: http: //pastebin.com/dvTgsU7S此代码可以满足我的要求,但有没有更好的方法实现这个查询?当我在数据库中有 1000 多个条目时,我认为性能将是一个问题......