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>
我尝试了各种各样的连接和东西但是无处可靠。
感谢您的时间。
答案 0 :(得分:0)
我使用以下文章为另一个项目(注意它是ZipCodes)做了类似的事情。您可以采用相同的原则并将其应用于邮政编码。
答案 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,然后运行正常