Mysql 左连接不';行不通

Mysql 左连接不';行不通,mysql,sql,wordpress,taxonomy,taxonomy-terms,Mysql,Sql,Wordpress,Taxonomy,Taxonomy Terms,我有两种分类法:城市和街道 我需要为我的一个插件获取postmeta 仅适用于一种分类法的工作代码: SELECT * FROM $wpdb->postmeta LEFT JOIN $wpdb->posts ON($wpdb->posts.ID = $wpdb->postmeta.post_id) LEFT JOIN $wpdb->term_relationships ON ($wpdb->postmeta.post_id = $wpdb->term_r

我有两种分类法:
城市
街道

我需要为我的一个插件获取
postmeta

仅适用于一种分类法的工作代码:

SELECT *
FROM $wpdb->postmeta
LEFT JOIN $wpdb->posts ON($wpdb->posts.ID = $wpdb->postmeta.post_id)
LEFT JOIN $wpdb->term_relationships ON ($wpdb->postmeta.post_id = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE meta_key LIKE 'rwp_rating%'
  AND ($wpdb->term_taxonomy.taxonomy = 'city'
       AND $wpdb->term_taxonomy.term_id = '2')
但如果我附加

AND ($wpdb->term_taxonomy.taxonomy = 'street' AND $wpdb->term_taxonomy.term_id = '5')
它返回空结果

我也试着这么做:

SELECT *
FROM $wpdb->postmeta
LEFT JOIN $wpdb->posts ON ($wpdb->posts.ID = $wpdb->postmeta.post_id)
LEFT JOIN $wpdb->term_relationships ON ($wpdb->postmeta.post_id = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy AS t1 ON ($wpdb->term_relationships.term_taxonomy_id = t1.term_taxonomy_id)
LEFT JOIN $wpdb->term_taxonomy AS t2 ON ($wpdb->term_relationships.term_taxonomy_id = t2.term_taxonomy_id)
WHERE meta_key LIKE 'rwp_rating%'
  AND (t1.taxonomy = 'city'
       AND t1.term_id = '2')
  AND (t2.taxonomy = 'street'
       AND t2.term_id = '3331');
而且它也不起作用

请注意:我需要同时匹配这两个,例如:
city=2和street=2


不:
city=2或street=2

您的第一次尝试将不起作用,因为单个分类记录不能同时包含street和city

更新您的第二次尝试:

SELECT * FROM $wpdb->postmeta 
LEFT JOIN $wpdb->posts ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) 
LEFT JOIN $wpdb->term_relationships ON ($wpdb->postmeta.post_id = $wpdb->term_relationships.object_id) 
LEFT JOIN $wpdb->term_taxonomy as t1 ON ($wpdb->term_relationships.term_taxonomy_id = t1.term_taxonomy_id AND t1.taxonomy = 'city') 
LEFT JOIN $wpdb->term_taxonomy as t2 ON ($wpdb->term_relationships.term_taxonomy_id = t2.term_taxonomy_id AND t2.taxonomy = 'street') 
WHERE meta_key LIKE 'rwp_rating%' AND t1.term_id = '2' AND t2.term_id = '3331');

您的第一次尝试将不起作用,因为单个分类法记录中不能同时包含街道和城市

更新您的第二次尝试:

SELECT * FROM $wpdb->postmeta 
LEFT JOIN $wpdb->posts ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) 
LEFT JOIN $wpdb->term_relationships ON ($wpdb->postmeta.post_id = $wpdb->term_relationships.object_id) 
LEFT JOIN $wpdb->term_taxonomy as t1 ON ($wpdb->term_relationships.term_taxonomy_id = t1.term_taxonomy_id AND t1.taxonomy = 'city') 
LEFT JOIN $wpdb->term_taxonomy as t2 ON ($wpdb->term_relationships.term_taxonomy_id = t2.term_taxonomy_id AND t2.taxonomy = 'street') 
WHERE meta_key LIKE 'rwp_rating%' AND t1.term_id = '2' AND t2.term_id = '3331');

当左连接时,将右侧表条件放在ON子句中以获得真正的左连接行为。(在WHERE中,您将获得常规的内部联接结果。)左联接时,将右侧表条件放在ON子句中,以获得真正的左联接行为。(在WHERE中时,您会得到常规的内部联接结果。)谢谢,但这也只能单独工作。不工作:t1.term_id='2'和t2.term_id='3185';工作:t1.term_id='2';工作:t2.term_id='3185';工作:t1.term_id='2'或t2.term_id='3185';谢谢,但这也只能单独使用。不工作:t1.term_id='2'和t2.term_id='3185';工作:t1.term_id='2';工作:t2.term_id='3185';工作:t1.term_id='2'或t2.term_id='3185';