1
我知道这是不对的,虽然这是工作。子查询与WordPress的帖子和post_meta
我需要查找距离给定半径和位置较近的所有帖子(作为收入),但我需要子查询post_meta中的经度和纬度信息。
这会伤害你的眼睛,所以这里是:
/*
lat -23.6480147
lng -46.704116399999975
radius 20km
6371 para km e 3959 para miles
*/
SELECT vision_outlet.wp_posts.ID as 'ID',
vision_outlet.wp_posts.post_title as 'Nome',
(
SELECT vision_outlet.wp_postmeta.meta_value
FROM vision_outlet.wp_postmeta
WHERE vision_outlet.wp_postmeta.meta_key = 'formatted_address'
AND vision_outlet.wp_postmeta.post_id = vision_outlet.wp_posts.ID
) as 'formatted_address' ,
(
SELECT vision_outlet.wp_postmeta.meta_value
FROM vision_outlet.wp_postmeta
WHERE vision_outlet.wp_postmeta.meta_key = 'lat'
AND vision_outlet.wp_postmeta.post_id = vision_outlet.wp_posts.ID
) as 'lat',
(
SELECT vision_outlet.wp_postmeta.meta_value
FROM vision_outlet.wp_postmeta
WHERE vision_outlet.wp_postmeta.meta_key = 'lng'
AND vision_outlet.wp_postmeta.post_id = vision_outlet.wp_posts.ID
) as 'lng',
(
6371 * acos(cos(radians(-23.6480147)) * cos(radians
(
(
SELECT vision_outlet.wp_postmeta.meta_value
FROM vision_outlet.wp_postmeta
WHERE vision_outlet.wp_postmeta.meta_key = 'lat'
AND vision_outlet.wp_postmeta.post_id = vision_outlet.wp_posts.ID
)
)) * cos(radians
(
(
SELECT vision_outlet.wp_postmeta.meta_value
FROM vision_outlet.wp_postmeta
WHERE vision_outlet.wp_postmeta.meta_key = 'lng'
AND vision_outlet.wp_postmeta.post_id = vision_outlet.wp_posts.ID
)
) - radians(-46.704116399999975)) + sin(radians(-23.6480147)) * sin(radians
(
(
SELECT vision_outlet.wp_postmeta.meta_value
FROM vision_outlet.wp_postmeta
WHERE vision_outlet.wp_postmeta.meta_key = 'lat'
AND vision_outlet.wp_postmeta.post_id = vision_outlet.wp_posts.ID
)
)))
) as 'distance'
FROM vision_outlet.wp_posts, vision_outlet.wp_postmeta
WHERE vision_outlet.wp_posts.ID = vision_outlet.wp_postmeta.post_id
AND vision_outlet.wp_posts.post_status = 'publish'
AND vision_outlet.wp_postmeta.meta_key = 'formatted_address'
HAVING distance < 20
ORDER BY distance
的问题是:我是否需要考虑创建一个新的表或有任何重构这种方式?
我觉得元查询是针对这个问题http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters –
FWIW,当遇到这种问题有用的,我喜欢构造一个伪规范化的物化视图,然后在其上执行其余的查询,但这可能不是最优的。 – Strawberry