Помогите с запросом SQL - PullRequest
5 голосов
/ 28 июня 2010

Я ищу запрос SQLite, который будет возвращать значения, которые больше или меньше 0,014763 для lng и 0.008830 для lat.Я использую следующий код ...

 $latupp = $_REQUEST['currlat'] + 0.008830; 
 $latlow = $_REQUEST['currlat'] - 0.008830;
 $lngupp = $_REQUEST['currlng'] + 0.014763;
 $lnglow = $_REQUEST['currlng'] - 0.014763;
 $q=mysql_query("SELECT * FROM `tweets` 
                       WHERE `lat` > $latlow AND
                             `lat` < $latupp OR 
                             `lng` >  $lnglow AND
                             `lng` < $lngupp;") or die(mysql_error());

Но он возвращает неверные результаты, например, результаты больше или меньше 0,1441209.Я не могу понять, почему.у кого-нибудь есть предложения?

Ответы [ 3 ]

7 голосов
/ 28 июня 2010

Возможно ...

 $q=mysql_query("SELECT * FROM `tweets` 
                       WHERE `lat` > $latlow AND
                             `lat` < $latupp AND 
                             `lng` >  $lnglow AND
                             `lng` < $lngupp;") or die(mysql_error());
5 голосов
/ 28 июня 2010

Это должно сработать:

 $latupp = $_REQUEST['currlat'] + 0.008830;  
 $latlow = $_REQUEST['currlat'] - 0.008830; 
 $lngupp = $_REQUEST['currlng'] + 0.014763; 
 $lnglow = $_REQUEST['currlng'] - 0.014763; 
 $q=mysql_query("SELECT * FROM `tweets`  
                       WHERE `lat` BETWEEN $latlow AND $latupp   
                             AND
                             `lng` BETWEEN  $lnglow AND $lngupp;") or die(mysql_error()); 

Возможно, вам нужна скобка для разделения первой и второй части (здесь это не проверяется).

Вы сделали небольшую ошибку, подключивширота и длинное ограничение с «ИЛИ».Ваша команда говорит:

Дайте мне все записи, которые имеют:

  • значение lat больше, чем $ latlow И ниже, чем $ latupp, НЕТ МАТЕРИИ, какое длинное значение он получил

ИЛИ

  • длинное значение, большее, чем $ lnglow, и меньше, чем $ lngupp, Неважно, какое значение lat имеет

ИЛИ ОБА

0 голосов
/ 28 июня 2010

Попробуйте это.

$q=mysql_query("SELECT * FROM `tweets` 
                       WHERE `lat` >". $latlow. "AND
                             `lat` <". $latupp. "OR 
                             `lng` >".  $lnglow. "AND
                             `lng` <". $lngupp.";")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...