mysql根據村行政編號查詢地區id組,村行政編號查詢整串地區名稱


地區表里面是有6級的,級別分別是:國、省/直轄市、市、區/縣、鄉鎮、村/小區,實現通過村的地區行政編號查詢整個詳細地址。

數據庫中准備好地區數據,表名稱為“area1”,字段結構如下:

字段結構中,id是地區的id號,parent_id是地區與上級地區的關聯id,如此有序構建6級地區,從國一直構建到村。

數據表里面的數據截圖如下:

我們要實現通過輸入村的number(地區編號)就能查詢出村上面的一串的詳細地址,並且能查詢出一串的ID組

由於下級與上級的關系是用parent_id字段做關聯的,地址數據不在一條上面,每次查詢編號時,都要對應的查詢上層5次,所以sql語句較為麻煩。

sql語句如下:

SELECT
    `a6`.`number` AS `number`,
    concat(
        `a1`.`id`,
        ',',
        `a2`.`id`,
        ',',
        `a3`.`id`,
        ',',
        `a4`.`id`,
        ',',
        `a5`.`id`,
        ',',
        `a6`.`id` 
    ) AS `area_id`,
    concat( `a1`.`name`, `a2`.`name`, `a3`.`name`, `a4`.`name`, `a5`.`name`, `a6`.`name` ) AS `area_name` 
FROM
    (((((
                        `area1` `a6`
                        JOIN `area1` `a5` ON ((
                                `a6`.`parent_id` = `a5`.`id` 
                            )))
                    JOIN `area1` `a4` ON ((
                            `a5`.`parent_id` = `a4`.`id` 
                        )))
                JOIN `area1` `a3` ON ((
                        `a4`.`parent_id` = `a3`.`id` 
                    )))
            JOIN `area1` `a2` ON ((
                    `a3`.`parent_id` = `a2`.`id` 
                )))
        JOIN `area1` `a1` ON ((
                `a2`.`parent_id` = `a1`.`id` 
            ))) 
WHERE
    ((
            `a6`.`level` = 6 
            ) 
    AND ( `a6`.`number` = 110101001002 )) 
    LIMIT 0,1

通過以上sql語句,只要改變number的值就能得到結果,查詢結果如下圖:

這樣就實現了通過number(地區行政編號)查詢area_id(id組),area_name(詳細地址)的作用。

一般在選擇地區時,存儲ID組,比存儲地區行政編號作用更強,比如按地區搜索訂單時,效果非常顯著。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM