我有2個分類標準:city
和street
。LEFT JOIN不起作用
我需要爲我的一個插件獲得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 AND street = 2
不是:city = 2 OR street = 2
當LEFT JOIN,把右側表條件在ON子句來獲得真正的左聯接行爲。 (在WHERE中,您會得到常規的內部連接結果。) – jarlh