วันอังคารที่ 29 กรกฎาคม พ.ศ. 2557

ฐานข้อมูล MySQL ตำบล อำเภอ จังหวัด ตอนที่ 2 เพิ่มรหัสไปรษณีย์; Thailand Provinces, Amphures, Districts in MySQL Database - Add Zipcode


ตอนที่แล้ว เราได้ปรับแก้ไขฐานข้อมูลไว้ให้สอดคล้องกับการเพิ่มข้อมูลรหัสไปรษณีย์แล้ว ในตอนนี้เราจะเพิ่มตารางรหัสไปรษณีย์ (zipcode) ลงไป แต่ต้องปรับข้อมูลให้ตรงกันก่อน

ทดสอบ DEMO ได้ที่นี่ ด้านล่างของบทความคลิกเลือกจังหวัด อำเภอ ตำบลได้เลย

ท่านที่ไม่ต้องการอ่านก็สามารถ download ตัวที่ทำเสร็จแล้วได้ที่นี่
ฐานข้อมูลตำบล อำเภอ จังหวัด ผนวกกับรหัสไปรษณีย์



ขั้นตอนที่ 1 ปรับเลขอ้างอิงให้ตรงกัน
ไฟล์ Excel ก่อนปรับ
ไฟล์ Excel หลังปรับ

ขั้นตอนที่ 2 ปรับให้พร้อมที่จะเพิ่มเป็นตารางในฐานข้อมูล
ภาพแสดง Excel หลังปรับพร้อม Insert

ขั้นตอนที่ 3 สร้างตาราง และ import
ภาพแสดงการสร้างตาราง zipcode #1

ภาพแสดงการสร้างตาราง zipcode #2

ภาพแสดงข้อมูลหลัง import

ขั้นตอนที่ 4 เปลี่ยนชื่อจังหวัดเป็น PROVINCE_ID

UPDATE `zipcode` as z, `province` as a SET z.`PROVINCE_ID`=a.`PROVINCE_ID` WHERE z.`PROVINCE_ID`=a.`PROVINCE_NAME`
ผลลัพธ์คือ 7,255 ระเบียนผ่านหมด
ภาพแสดงชื่อจังหวัดเปลี่ยนเป็นรหัส

ขั้นตอนที่ 5 เปลี่ยนชื่ออำเภอเป็น AMPHUR_ID

อำเภอ....
UPDATE `zipcode` as z, `amphur` as a SET z.`AMPHUR_ID`=a.`AMPHUR_ID` WHERE z.`PROVINCE_ID`=a.`PROVINCE_ID` AND z.`AMPHUR_ID`=a.`AMPHUR_NAME`
7257

เพิ่ม "เขต" หน้าชื่อเขตในจังหวัดกรุงเทพ
UPDATE `zipcode` SET `AMPHUR_ID`=CONCAT('เขต',`AMPHUR_ID`) WHERE `PROVINCE_ID`=1
171

เปลี่ยนชื่ออำเภอ(เขต)ในกรุงเทพ
UPDATE `zipcode` as z, `amphur` as a SET z.`AMPHUR_ID`=a.`AMPHUR_ID` WHERE z.`PROVINCE_ID`=1 AND z.`AMPHUR_ID`=a.`AMPHUR_NAME`
171 OK

เหลือ 24

เปลี่ยนหนองบุญนาก เป็นหนองบุญมาก
UPDATE `zipcode` as z SET `AMPHUR_ID`='หนองบุญมาก' WHERE `AMPHUR_ID`='หนองบุนนาก'
9
เปลี่ยนชื่อเป็นรหัสของหนองบุญมาก นครราชสีมา
UPDATE `zipcode` as z, `amphur` as a SET z.`AMPHUR_ID`=a.`AMPHUR_ID` WHERE z.`PROVINCE_ID`=19 AND z.`AMPHUR_ID`=a.`AMPHUR_NAME`
9 OK

เปลี่ยนเมืองศีรสะเกษ เป็นเมืองศรีสะเกษ
UPDATE `zipcode` as z SET `AMPHUR_ID`='เมืองศรีสะเกษ' WHERE `AMPHUR_ID`='เมืองศีรสะเกษ'
18 OK
เปลี่ยนชื่อเป็นรหัสศรีสะเกษ
UPDATE `zipcode` as z, `amphur` as a SET z.`AMPHUR_ID`=a.`AMPHUR_ID` WHERE z.`PROVINCE_ID`=22 AND z.`AMPHUR_ID`=a.`AMPHUR_NAME`
18 OK


ขั้นตอนที่ 6 เปลี่ยนชื่อตำบลเป็น DISTRICT_ID

ตำบล.....
เปลี่ยนชื่อตำบลเป็นรหัส
UPDATE `zipcode` as z, `district` as d SET z.`DISTRICT_ID`=d.`DISTRICT_ID` WHERE z.`PROVINCE_ID`=d.`PROVINCE_ID` AND z.`AMPHUR_ID`=d.`AMPHUR_ID` AND z.`DISTRICT_ID`=d.`DISTRICT_NAME`
7445 จาก 7455 หายไป 10

แก้ข้อมูลในตาราง district จาก "หนองตะครอง" เป็น "หนองตระครอง"
UPDATE  `thailand1`.`district` SET  `DISTRICT_NAME` =  'หนองตระครอง   ' WHERE  `district`.`DISTRICT_ID` =2192 LIMIT 1 ;
1

เพิ่มตำบลทุ่งใหญ่ ศรีสะเกษ
INSERT INTO `thailand1`.`district` (`DISTRICT_ID`, `DISTRICT_CODE`, `DISTRICT_NAME`, `AMPHUR_ID`, `PROVINCE_ID`, `GEO_ID`) VALUES (NULL, '330320', 'ทุ่งใหญ่', '292', '22', '3');
1+1=2

แก้ตำบล ห้วยขะยูง เป็นห้วยขะยุง
UPDATE  `thailand1`.`district` SET  `DISTRICT_NAME` =  'ห้วยขะยุง   ' WHERE  `district`.`DISTRICT_ID` =2984 LIMIT 1 ;
2+1=3

แก้ตำบล นิคมสร้างตนเองลำโดมน้อย
UPDATE  `thailand1`.`zipcode` SET  `DISTRICT_ID` =  'นิคมสร้างตนเองลำโดมน้อย' WHERE  `zipcode`.`ZIPCODE_ID` =2529 LIMIT 1 ;
3+1=4

แก้ตำบล ซับสีทอง
UPDATE  `thailand1`.`district` SET  `DISTRICT_NAME` =  'ซับสีทอง' WHERE  `district`.`DISTRICT_ID` =3255 LIMIT 1 ;
4+1=5

UPDATE  `thailand1`.`district` SET  `DISTRICT_NAME` =  'ในเมือง' WHERE  `district`.`DISTRICT_ID` =3661 LIMIT 1 ;
5+1=6

UPDATE  `thailand1`.`district` SET  `DISTRICT_NAME` =  'เขาน้อย' WHERE  `district`.`DISTRICT_ID` =3667 LIMIT 1 ;
6+1=7

UPDATE  `thailand1`.`district` SET  `DISTRICT_NAME` =  'เมืองเก่าพัฒนา' WHERE  `district`.`DISTRICT_ID` =3674 LIMIT 1 ;
7+1=8

UPDATE  `thailand1`.`zipcode` SET  `DISTRICT_ID` =  'ขามเปี้ย' WHERE  `zipcode`.`ZIPCODE_ID` =3655 LIMIT 1 ;
8+1=9

UPDATE  `thailand1`.`zipcode` SET  `DISTRICT_ID` =  'วังหงส์' WHERE  `zipcode`.`ZIPCODE_ID` =4608 LIMIT 1 ;
9+1=10

ครบ

เปลี่ยนชื่อตำบลเป็นรหัส (อีกครั้ง...ทำกับข้อมูลที่เหลือ)
UPDATE `zipcode` as z, `district` as d SET z.`DISTRICT_ID`=d.`DISTRICT_ID` WHERE z.`PROVINCE_ID`=d.`PROVINCE_ID` AND z.`AMPHUR_ID`=d.`AMPHUR_ID` AND z.`DISTRICT_ID`=d.`DISTRICT_NAME`


ภาพแสดงตัวอย่างชื่อตำบลที่มีปัญหาในฐานข้อมูลเดิม

ภาพแสดงตัวอย่างชื่อตำบลที่มีปัญหาในรหัสไปรษณีย์

จากการแก้ปัญหาอันยาวเหยียดจะเห็นได้ว่าเมื่อเอาข้อมูลรหัสไปรษณีย์มาผนวกเข้ากับฐานข้อมูลตำบล อำเภอ จังหวัดของเดิมที่ทำไว้ ยังพบปัญหาเรื่องชื่อที่ไม่ตรงกันอีกมาก จึงต้องแก้ไขให้ถูกต้อง

ภาพแสดงฐานข้อมูลตำบล อำเภอ จังหวัด และรหัสไปรษณีย์ที่สมบูรณ์แล้ว

ท่านสามารถ download ได้ที่นี่
ฐานข้อมูลตำบล อำเภอ จังหวัด ผนวกกับรหัสไปรษณีย์


13 ความคิดเห็น:

  1. ขอบคุณสำหรับบทความและข้อมูลดีๆค่ะ

    ตอบลบ
  2. ขอบคุณนะค่ะสำหรับข้อมูลขอนำไปใช้นะค่ะ

    ตอบลบ
  3. พอโหลดมาแล้ว import เข้าไปใน mysql ยังไงหรอครับ?

    ตอบลบ
  4. ความคิดเห็นนี้ถูกผู้เขียนลบ

    ตอบลบ
  5. domdn620@gmail.com หมายเลขโทรศัพท์0648524899 เป็นเจ้าของตัวจริงนายโดม

    ตอบลบ
  6. domer191@gmail.com.domdn98@gmail.com(+855962230122)dom dm(p9292808)​ ขอที่เหลือ โยบายส่วนบุคคล

    ตอบลบ