1 回答

TA貢獻1963條經驗 獲得超6個贊
我不是大佬,我來說說我的想法吧。
首先是地區表示,你知道有種官方的編碼叫做行政區劃代碼嗎?這個在民政部可以查到,不過沒有格式化的數據。你也可以找網上別人已經整理好的地區庫。
我們可以把代碼存放到數據庫中,也可以寫到文件中,這就看你自己了。
就拿你的例子來說,廣東省廣州市白云區的代碼是440111
,浙江省杭州市西湖區是330106
。
其實代碼很好理解,每兩位數分別代表省、市、縣。
44
就是廣東省,的33
就是浙江省。 01
在廣東省下就是廣州市,在浙江省下就是杭州市。
表示上級地區的,是在后面補0足6位。
比如廣東省就是440000
,廣東省廣州市就是440100
。
所以我們保存某地區的公司時,只要把對應的代碼存起來就行了。
比如公司表:
id name district
1 廣東省1公司 440000
2 廣東省2公司 440000
3 廣東省廣州市白云區公司 440111
在網頁地區選擇中,返回的value只要對應價格兩位就夠了。
比如sheng=44&shi=01&xian=11
我們處理時補出三個代碼
440000、440100和440111
然后我們直接查找公司表
如SELECT * FROM company WHERE district=440000 OR district=440100 OR district=440111;
然后返回結果,我們再一一檢查就行了。
當然,可能公司很多,一次返回的結果太多了,我們可以先查詢440111的,有結果就返回,沒有就再查詢440100的,以此類推。
甚至,我們能在SQL中就完成這個操作
SELECT CASE WHEN EXIST(SELECT * FROM company WHERE district=440111) THEN (SELECT * FROM company WHERE district=440111) WHEN EXIST(SELECT * FROM company WHERE district=440100) THEN (SELECT * FROM company WHERE district=440100) ELSE (SELECT * FROM company WHERE district=440000) END;
當然,你不想用地區代碼,想要自己編碼,甚至直接保存中文也是可以的,操作都是類似的。
以上代碼手機輸入,未經過驗證,請自行搜索相關內容理解后使用。
- 1 回答
- 0 關注
- 226 瀏覽
添加回答
舉報