2013-12-13 2 views
0

Так вот мой вопрос:Объединение несколько, где условие В MySQL SELECT, запрос

У меня есть таблица базы данных, где у меня есть широта и долгота и временная метка. Мне нужно иметь возможность искать через эту таблицу с помощью PHP. Каким будет запрос поиска строк с lats и lons в определенном диапазоне и, кроме того, в определенный временной интервал.

Я нашел два отдельных запроса, которые будут работать при просмотре через Интернет, но я не могу найти четкий способ объединения нескольких условий.

Два запросы:

SELECT id, (3959 * acos(cos(radians(37)) * cos(radians(lat)) * 
    cos(radians(lng) - radians(-122)) + sin(radians(37)) * 
    sin(radians(lat)))) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20; 

введите код здесь

SELECT * FROM `table` WHERE `date_field` BETWEEN 'date1' AND 'date2' 

Мне нужно найти двадцатку результатов, где метка времени и широты и долго находятся в диапазоне. Спасибо!

EDIT: Все поля находятся в одной таблице.

ответ

0

Если все данные в одной таблице, вы можете сделать:

SELECT id, (3959 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat)))) AS distance 
FROM markers 
WHERE date_field BETWEEN 'date1' AND 'date2' 
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20; 
+0

Примечание это не может ссылаться на псевдоним столбца в ИНЕКЕ. Причина заключается в том, что к тому моменту, когда оценивается предложение WHERE, значение столбца может еще не определено (подумайте о 'sum (num) как total') –

+0

@MostyMostacho, я просто скопировал и вставил инструкцию OP SELECT, поскольку это как у него это есть. Я просто показываю, как объединить два разных запроса. Не стесняйтесь редактировать, если вы считаете, что это действительно нужно. ''date1'' и'' date2'' также не допускаются, но это также то, как OP имеет это :) – TheCarver

+0

Выполнено. Обратите внимание, что OP не имеет поля 'distance' в предложении' where' по какой-либо причине (причина - мой первый комментарий). –

Смежные вопросы