当前位置:  开发笔记 > 编程语言 > 正文

帮助SQL查询

如何解决《帮助SQL查询》经验,为你挑选了2个好方法。

我正在寻找一个SQLite查询,它将为lng返回大于或小于0.014763的值,为lat返回0.008830.我正在使用以下代码......

 $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.我无法弄清楚原因.有没有人有什么建议?



1> Brian Hooper..:

也许...

 $q=mysql_query("SELECT * FROM `tweets` 
                       WHERE `lat` > $latlow AND
                             `lat` < $latupp AND 
                             `lng` >  $lnglow AND
                             `lng` < $lngupp;") or die(mysql_error());



2> das_weezul..:

这应该工作:

 $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()); 

也许你需要括号来分隔第一和第二部分(不能在这里测试).

通过使用"OR"连接lat和long约束,你犯了一个小错误.你的命令说:

给我所有记录:

一个lat值大于$ latlow且低于$ latupp,NO MATTER它的长值

要么

一个大于$ lnglow的长值且低于$ lngupp NO MATTER它的lat值是多少

或两者

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有