繁体   English   中英

根据列值将SQL结果分组

[英]Combining SQL results into groups based on column value

我有一个超过200万行的表。 值之一是地址。 有些行有一个公共地址。 我正在使用php。

在我的网站上,我希望用户输入邮政编码,然后返回该邮政编码内的所有结果。 然后,我将使用Google在地图上对它们进行地理定位。 问题在于,由于Google会根据查询收费,因此我不会浪费时间和金钱来请求已经拥有的地址的坐标。 我认为这是正确的方法:

  1. 向用户询问邮政编码

  2. 运行“ Select * with'Zip Code'= $ user_zip”(措辞)

  3. 在第一个地址上运行Geolocate并在地图上绘图

  4. 检查结果中是否匹配地址,并与映射结果分组

  5. 查找下一个新地址

  6. 重复3-6直到完成

有没有更好的方法来解决这个问题? 我正在寻找一种高效,简便的方法来一次处理所有匹配结果,并且查询量最少。 如果我的方法是正确的,有人可以帮助我说明3-5的逻辑吗?

如果我理解正确,那么您想要做的就是为带有标记的地图绘制一个映射,该标记用于数据库中某个zip区域内的每个记录。 而您的挑战是您需要坐标来渲染每个标记。 就浪费资源而言,您的方法最大的问题是您没有在数据库中存储每个地址的坐标。 我建议您:

1-更改在数据库中创建这些记录的端点(或脚本或其他内容)以获取坐标并将其存储在数据库中。 2-运行一次迁移以获取每个记录的坐标。 虽然我了解使用Google的地理编码在200万行中执行此操作可能会“成本很高”(200万个api调用的估算费用为1000美元)。 为了节省成本,您可以研究一些开源地图工具。

无论哪种方式,在请求生命周期中获取坐标都将浪费资源,并且会显着影响速度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM