Я пытаюсь объединить два запроса в один, и я надеюсь, что вы мне поможете.
В запросе содержится список записей (почтовых индексов), которые находятся на определенном расстоянии.Это работает просто отлично.($ lat, $ lng, $ zip и $ size пока жестко заданы).
Теперь мне нужно объединить это с поиском записей из другой таблицы, которые соответствуют этим почтовым индексам.
Это мой запрос:
SELECT
source.zc_zip,
source.zc_location_name,
ACOS(
SIN(RADIANS(zc_lat)) * SIN(RADIANS($lat))
+ COS(RADIANS(zc_lat)) * COS(RADIANS($lat)) * COS(RADIANS(zc_lon)
- RADIANS($lng))
) * 6371 AS distance
FROM zip_coordinates AS source
WHERE zc_id <> $zip
GROUP BY source.zc_zip
HAVING distance < $size
ORDER BY distance LIMIT 10;
Я уже изменил его, чтобы он выглядел так, потому что у нас есть совпадение, когда source.zc_zip совпадает с info.meta_value:
SELECT
source.zc_zip,
source.zc_location_name,
info.*,
ACOS(
SIN(RADIANS(zc_lat)) * SIN(RADIANS($lat))
+ COS(RADIANS(zc_lat)) * COS(RADIANS($lat)) * COS(RADIANS(zc_lon)
- RADIANS($lng))
) * 6371 AS distance
FROM zip_coordinates AS source, wp_postmeta AS info
WHERE zc_id <> $zip AND info.meta_value = source.zc_zip
GROUP BY source.zc_zip
HAVING distance < $size
ORDER BY distance LIMIT 10;
Нет необходимостисказать, что этот запрос действительно медленный (> 1 сек.).
Может кто-нибудь помочь с этим?Спасибо!: -)
- Доминик