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 が欠落している場合、その投稿全体がまったく返されません。
したがって、既存のクエリと makemeta_key='featured'
またはmeta_key='martygeocoderlatlng'
optional を取得する必要があるため、それらが存在しない場合でも、他の比較を行って必要なデータを取得できます。
(これは何らかの形で OUTER JOIN で行われると思いますが、構文を完全に整理することはできません。)
これは、meta_key='featured' および meta_key='martygeocoderlatlng' が wp_postmeta テーブルに存在する行のみを返す既存のクエリです (もちろん、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