我正在尝试获取 wp_postmeta 表具有(meta_key='propdetails' AND meta_value LIKE '%Vacant Unrented Ready%')
或的所有帖子(meta_key='featured' AND meta_value='on')
。
我现有的查询(如下)正在工作,除非 meta_key 'featured' 行丢失。然后,该帖子不会被退回。
同样,对于匹配行,我还需要检索我想要获取的meta_value
where meta_key='martygeocoderlatlng'
。但是,如果缺少该 meta_key,则根本不会返回整个帖子。
所以我需要使用我现有的查询并制作meta_key='featured'
或meta_key='martygeocoderlatlng'
可选,所以如果它们不存在,我仍然可以进行其他比较并获取我需要的数据。
(我认为这可以通过某种方式使用 OUTER JOIN 来完成,但我无法完全理清语法。)
这是我现有的查询,它只返回 wp_postmeta 表中存在 meta_key='featured' 和 meta_key='martygeocoderlatlng' 的行(当然,满足 WHERE 子句中的其他条件):
SELECT
p.*,
pm.*,
pm_featured.meta_value AS featured,
pm_latlng.meta_value AS latlng
FROM
wp_posts p
JOIN wp_postmeta pm
ON pm.post_id = p.ID
JOIN wp_postmeta pm_propdetails
ON (pm_propdetails.post_id = p.ID AND pm_propdetails.meta_key = 'propdetails')
JOIN wp_postmeta pm_featured
ON (pm_featured.post_id = p.ID AND pm_featured.meta_key = 'featured-property')
JOIN wp_postmeta pm_latlng
ON (pm_latlng.post_id = p.ID AND pm_latlng.meta_key = 'martygeocoderlatlng')
JOIN wp_term_relationships tr
ON tr.object_id = p.ID
JOIN wp_term_relationships tr_taxrel
ON (tr_taxrel.object_id = p.ID AND tr_taxrel.term_taxonomy_id = 12)
WHERE
(pm_propdetails.meta_value LIKE '%Vacant Unrented Ready%'
OR
pm_featured.meta_value = 'on')
AND p.post_type = 'property'
AND p.post_status = 'publish'
GROUP BY p.ID
ORDER BY p.post_date DESC