Làm cách nào tôi có thể sử dụng bí danh cột (lat và lng) của mình từ hai truy vấn phụ để làm cho phép tính khoảng cách bên dưới? Những gì tôi về cơ bản cố gắng làm là để tính toán khoảng cách giữa hai địa điểm bằng cách sử dụng các giá trị kinh độ và vĩ độ. Nhưng bằng cách nào đó bí danh của tôi không thể sử dụng được trong truy vấn, tại sao?Cách sử dụng bí danh cột MySQL để tính toán?
SELECT wp_posts.*,
(SELECT wp_postmeta.meta_value FROM wp_postmeta WHERE wp_postmeta.post_id = wp_posts.ID AND wp_postmeta.meta_value LIKE '41.%') AS lat,
(SELECT wp_postmeta.meta_value FROM wp_postmeta WHERE wp_postmeta.post_id = wp_posts.ID AND wp_postmeta.meta_value LIKE '2.%') AS lng,
(3959 * acos(cos(radians(41.367682)) * cos(radians('lat')) * cos(radians('lng') - radians(2.154077)) + sin(radians(41.367682)) * sin(radians('lat')))) AS distance
FROM wp_posts, wp_postmeta
WHERE wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = 'position' AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'page' AND wp_posts.post_date < NOW()
GROUP BY ID
ORDER BY distance ASC
Tại sao bạn đặt dấu ngoặc kép và lng trong dấu ngoặc kép trong biểu thức? –
Ứng dụng có chạy mà không có bất kỳ lỗi nào hoặc bạn gặp phải một số lỗi trong khi thực hiện truy vấn này không? – Lion
Dấu ngoặc kép là cần thiết để chạy truy vấn, tôi không nhận được lỗi và mọi thứ được trả về một cách chính xác ngoại trừ việc tính toán khoảng cách trả về cùng giá trị cho tất cả các bản ghi, có nghĩa là các giá trị được nhập không được sử dụng cho bất kỳ thứ gì. Tôi làm gì sai ở đây? – Chris