У меня есть большая база данных с постами таксономии «учреждения» и метаполя «цена».Мне нужно рассчитать количество бесплатных заведений, т.е. имея цену = '0'.Собственные запросы WP слишком медленные (30 секунд), поэтому я изобрел пользовательский:
SELECT COUNT(*) as kount
FROM wp_posts as p
LEFT JOIN wp_postmeta as pm
ON p.ID = pm.post_id
LEFT JOIN wp_term_relationships as wtr
ON p.ID = wtr.object_id
WHERE p.post_type = 'institution'
AND p.post_status = 'publish'
AND pm.meta_key = 'price'
AND pm.meta_value = '0'
В результате получается 92456, что превышает общее количество сообщений
select count(*) from wp_posts
, что возвращает 86317. Хорошо,Я думал, что некоторые из постов имеют несколько ценовых полей, но нет:
select post_id, count(*) kount from wp_postmeta
where meta_key='price'
group by post_id
having kount>1
возвращает пустой набор.Что не так с моим SQL?