簡體   English   中英

幫助SQL查詢

[英]Help with a SQL Query

我正在尋找一個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。 我無法弄清楚原因。 有沒有人有什么建議?

也許...

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

這應該工作:

 $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值是多少

或兩者

試試這個。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM