
最近在工作當中,遇見了有ztree關系的查詢:
比如:根據父級的部門ID查詢所有的子級部門;
根據父級的區划代碼查詢所屬下級的所有區划信息;
根據子級ID查詢隸屬行政區划信息;
根據組織機構ID查詢所有子級組織機構;
數據准備
為了測試,我們首先來創建一張擁有上下級關系的表,這里選擇創建一張區划信息表
准備數據:
這里給了一些測試數據,如果需要可以參考:
抓取國家統計局區划數據
可以測試數據:
INSERT INTO `tb_area` VALUES ('1', '中國', '100000', '0');
INSERT INTO `tb_area` VALUES ('2', '廣西壯族自治區', '450000000000', '1');
INSERT INTO `tb_area` VALUES ('3', '防城港市', '450600000000', '2');
INSERT INTO `tb_area` VALUES ('4', '港口區', '450602000000', '3');
INSERT INTO `tb_area` VALUES ('5', '防城區', '450603000000', '3');
INSERT INTO `tb_area` VALUES ('6', '上思縣', '450621000000', '3');
INSERT INTO `tb_area` VALUES ('7', '東興市', '450681000000', '3');
INSERT INTO `tb_area` VALUES ('8', '漁州坪街道', '450602001000', '4');
INSERT INTO `tb_area` VALUES ('9', '白沙葉街道', '450602002000', '4');
INSERT INTO `tb_area` VALUES ('10', '沙潭江街道', '450602003000', '4');
INSERT INTO `tb_area` VALUES ('11', '王府街道', '450602004000', '4');
INSERT INTO `tb_area` VALUES ('12', '企沙鎮', '450602100000', '4');
INSERT INTO `tb_area` VALUES ('13', '光坡鎮', '450602101000', '4');
INSERT INTO `tb_area` VALUES ('14', '水營街道', '450603001000', '5');
INSERT INTO `tb_area` VALUES ('15', '珠河街道', '450603002000', '5');
INSERT INTO `tb_area` VALUES ('109', '文昌街道', '450603003000', '5');
INSERT INTO `tb_area` VALUES ('110', '大菉鎮', '450603101000', '5');
INSERT INTO `tb_area` VALUES ('111', '華石鎮', '450603102000', '5');
INSERT INTO `tb_area` VALUES ('112', '那梭鎮', '450603103000', '5');
INSERT INTO `tb_area` VALUES ('113', '那良鎮', '450603104000', '5');
INSERT INTO `tb_area` VALUES ('114', '峒中鎮', '450603105000', '5');
INSERT INTO `tb_area` VALUES ('115', '茅嶺鎮', '450603106000', '5');
INSERT INTO `tb_area` VALUES ('116', '江山鎮', '450603107000', '5');
INSERT INTO `tb_area` VALUES ('117', '扶隆鎮', '450603108000', '5');
INSERT INTO `tb_area` VALUES ('118', '灘營鄉', '450603204000', '5');
INSERT INTO `tb_area` VALUES ('119', '十萬山瑤族鄉', '450603209000', '5');
INSERT INTO `tb_area` VALUES ('120', '思陽鎮', '450621100000', '6');
INSERT INTO `tb_area` VALUES ('121', '在妙鎮', '450621101000', '6');
INSERT INTO `tb_area` VALUES ('122', '華蘭鎮', '450621102000', '6');
INSERT INTO `tb_area` VALUES ('123', '叫安鎮', '450621103000', '6');
INSERT INTO `tb_area` VALUES ('124', '南屏瑤族鄉', '450621203000', '6');
INSERT INTO `tb_area` VALUES ('125', '平福鄉', '450621204000', '6');
INSERT INTO `tb_area` VALUES ('126', '那琴鄉', '450621206000', '6');
INSERT INTO `tb_area` VALUES ('127', '公正鄉', '450621208000', '6');
INSERT INTO `tb_area` VALUES ('128', '東興鎮', '450681100000', '7');
INSERT INTO `tb_area` VALUES ('129', '江平鎮', '450681101000', '7');
INSERT INTO `tb_area` VALUES ('130', '馬路鎮', '450681102000', '7');
代碼編寫
首先我們來寫自下而上的查詢:
也就是根據下級區划代碼ID查詢隸屬行政區
創建一個函數:
查詢方法:
顯示結果:

也可以直接使用SQL語句:
查出效果相同:

下來寫自上而下的查詢:
也就是根據上級區划代碼ID查詢隸屬下級行政區
創建一個函數:
查詢方法:
查詢結果:

歡迎關注摘星族,我們首發於微信公眾號:
