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';