В настоящее время я работаю над сайтом Wordpress, где храню мета-значения для типов записей.Мета-значения хранятся в таблице с именем wp_postmeta
как комбинации ключ / значение.Это означает, что несколько мета-значений для одного сообщения хранятся в разных строках.
Мне удалось каким-то образом успешно преобразовать строки в столбцы, используя следующий запрос:
SELECT post_id,
MAX(CASE WHEN meta_key='store_lng' THEN meta_value END ) AS lng,
MAX(CASE WHEN meta_key='store_lat' THEN meta_value END ) AS lat
FROM wp_postmeta GROUP BY post_id
ЗдесьВы можете видеть, что я загружаю значения Долготы и Широты из таблицы wp_postmeta
и вижу в качестве выходных данных post_id
, lng
и lat
.
Я вроде как доволен этимчасть однако, это становится немного более сложным.Я хочу провести некоторые вычисления значений lng
и lat
, чтобы увидеть, находятся ли они в определенном диапазоне.Проблема в том, что мета значения в таблице wp_postmeta
хранятся в виде текста.В идеале я бы хотел, чтобы мой запрос выглядел примерно так:
SELECT post_id,
MAX(CASE WHEN meta_key='store_lng' THEN meta_value END ) AS lng,
MAX(CASE WHEN meta_key='store_lat' THEN meta_value END ) AS lat
FROM wp_postmeta GROUP BY post_id
WHERE
(lat BETWEEN %f AND %f)
AND
(lng BETWEEN %f AND %f)
Где %f
- это, конечно, диапазон lng
и lat
, который я вычисляю до этого.
Итак, вопрос в том;Как я могу получить значения lng
и lat
для преобразования в число с плавающей точкой, чтобы я мог выполнить оператор BETWEEN для них?