[英]Mysql Query - increase values where value is greater than X but less than Y
[英]MySQL: WHERE value is greater than Min and less than Max
這是我的查詢:
SELECT wp_posts.ID, wp_posts.post_title, lat.meta_value AS latitude, lng.meta_value AS longitude, info1.meta_value AS street_no, info2.meta_value AS street, info3.meta_value AS street_suffix, price.meta_value AS price,
( 3959 * acos( cos( radians( '{$latitude}' ) ) * cos( radians( lat.meta_value ) ) * cos( radians( lng.meta_value ) - radians( '{$longitude}' ) ) + sin( radians( '{$latitude}' ) ) * sin( radians( lat.meta_value ) ) ) ) AS distance
FROM wp_posts
LEFT JOIN wp_postmeta AS lat
ON lat.post_id = wp_posts.ID
AND lat.meta_key = 'property_lat'
LEFT JOIN wp_postmeta AS lng
ON lng.post_id = wp_posts.ID
AND lng.meta_key = 'property_long'
LEFT JOIN wp_postmeta AS info1
ON info1.post_id = wp_posts.ID
AND info1.meta_key = 'street_no'
LEFT JOIN wp_postmeta AS info2
ON info2.post_id = wp_posts.ID
AND info2.meta_key = 'street'
LEFT JOIN wp_postmeta AS info3
ON info3.post_id = wp_posts.ID
AND info3.meta_key = 'street_suffix'
LEFT JOIN wp_postmeta AS price
ON price.post_id = wp_posts.ID
AND price.meta_key = 'price_current'
WHERE lat.meta_key IS NOT NULL
HAVING distance < 30
LIMIT 0, 20
我需要更新WHERE
狀態,以考慮price_min
和price_max
值...僅返回WHERE price is >= {$price_min} AND <= {$price_max}
我希望這是有道理的...
假設每個id僅獲得一行,建議您將查詢重寫為一個聚合:
select p.*,
( 3959 * acos( cos( radians( '{$latitude}' ) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians( '{$longitude}' ) ) + sin( radians( '{$latitude}' ) ) * sin( radians( latitude ) ) ) ) AS distance
from (select p.id,
max(case when meta_key = 'property_lat' then meta_value end) as latitude,
max(case when meta_key = 'property_long' then meta_value end) as longitude,
max(case when meta_key = 'street_no' then meta_value end) as street_no,
max(case when meta_key = 'street' then meta_value end) as street,
max(case when meta_key = 'street_suffix' then meta_value end) as street_suffix,
max(case when meta_key = 'price_current' then meta_value end) as price_current
from wp_posts p
group by p.id
) p
WHERE latitude IS NOT NULL and distance < 30
LIMIT 0, 20
該查詢未經測試,因此可能存在語法錯誤。
通過這種結構,您可以添加:
price_current is >= {$price_min} AND <= {$price_max}
到外部查詢。 我假設您的意思是price_current,因為價格不在原始查詢中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.