簡體   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