1 回答

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