邮政编码和距离MySQL查询

时间:2012-06-20 03:24:36

标签: php mysql

t_dealer包含dealer_name,dealer_state,dealer_postcode t_postcodes包含p1,p2,dist 查看距离时,我总是要确保较低(数字)的邮政编码为p1,较高的邮政编码为p2(除非它们相等)。

预先问题:如果客户浏览网站并输入(例如)3000的邮政编码,我如何进行连接(或我需要做的其他任何事情)给我的距离?

这不是太难,我知道 - 只是做

if($postcode>$dealer_postcode){

  $query="select dist from t_postcodes where p1=$dealer_postcode and p2=$postcode limit 1";

} else {

  $query="select dist from t_postcodes where p2=$dealer_postcode and p1=$postcode limit 1";

}

实际问题:我需要将州内的所有经销商(dealer_state)列在一个表格中(使用jqgrid),这意味着我需要一个单一的查询来提取所有经销商及其与$ postcode的距离。< / p>

我尝试了各种各样的连接和东西但是无处可靠。

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

我使用以下文章为另一个项目(注意它是ZipCodes)做了类似的事情。您可以采用相同的原则并将其应用于邮政编码。

ZipCode Radius Search Using MySQL

答案 1 :(得分:0)

以下是答案的第一部分:

select dist,p1,p2,dealer_postcode from t_dealer, t_postcodes where (if(dealer_postcode<$user_postcode,p1,p2)=dealer_postcode) and (if(dealer_postcode<$user_postcode,p2,p1)=$user_postcode)

我主要是从this页面(关于子查询)得到的。

第二部分 - 唯一让它在没有超时或耗时太长的情况下运行 - 是限制结果。我最初有大约2100个经销商。我将其(通过其他标准)限制为30,然后运行正常