Recursive กับโครงสร้างหน่วยงานในระบบบุคลากร ตอนที่ 1 การค้นหาข้อมูลในฐานข้อมูลแบบวนซ้ำ

พอดี จขกท. เป็นผู้พัฒนาระบบบุคลากร หลายคนเลยมีปัญหากับเจ้าตัวโครงสร้างหน่วยงานว่ามันดึงโครงสร้างปัจจุบันยังไง จริงๆ มันไม่ยากเลยครับ

ส่วนนี้จะนำเสนอส่วนของการดึงข้อมูลโครงสร้างหน่วยงานก่อน โดยใช้วิธีการแบบ Recursive ครับ

ฟังก์ชัน getDepartment() ใช้สำหรับเรียกเพื่อดึงโครงสร้างหน่วยงาน

INPUT คือ รหัสหน่วยงานหรือวิทยาลัย

5

บรรทัดที่ 10 คือ การโหลด Model เพื่อเรียกใช้ตาราง Department ในระบบบุคลากร ดังตัวอย่างเราจะสร้าง Model ขึ้นมา 1 ไฟล์ ชื่อว่า cls_department และวางไว้ในระบบเรา ส่วนหนึ่งเพื่อเรียกใช้ตารางดังกล่าวในระบบบุคลากร และเราสามารถแก้ไขไฟลืนี้ได้ โดยที่ไม่กระทบกับระบบบุคลากรด้วย

แล้วทำไมต้องตั้งชื่อว่า cls_ ทำไมไม่ใช้ m_ ก็เพื่อจะแยกระหว่าง Model ในระบบเราเองกับ Model ที่สร้างขึ้นมาเพื่อเรียกใช้ระบบอื่น นั่นเอง

บรรทัดที่ 12 คือ การหา deptGroup ของโครงสร้างหน่วยงานปัจจุบันออกมาก่อน เพราะข้อมูลโครงสร้างหน่วยงานในตาราง Department นั้น จะมีหลายชุดด้วยกัน ซึ่งเราต้องการแค่โครงสร้างที่ใช้อยู่ปัจจุบันเท่านั้น

บรรทัดที่ 14 คือ การนำเอา deptGroup ที่ได้จากบรรทัดที่ 12 ไปดึงเอาชื่อหน่วยงานที่เป็น Level ที่ 1 (เป็น parent ของทุกๆตัว)

บรรทัดที่ 16 คือ การเรียกฟังก์ชัน Recursive โดยนำข้อมูลที่ Query ได้จากบรรทัดที่ 14 ไปหา Level ถัดไปของแต่ละตัว

และบรรทัดที่ 17 คือ การคืนค่าข้อมูลโครงสร้างหน่วยงาน

ฟังก์ชัน Recursive เพื่อดึงข้อมูลลำดับชั้นถัดไป

ฟังก์ชัน recursive_getDepartment() ใช้สำหรับค้นหาชื่อหน่วยงานย่อย ในลำดับชั้นถัดไปแบบวนซ้ำ

6

บรรทัดที่ 21 คือ การตรวจสอบว่า Parent หรือ Child ที่หามาได้นั้นมีข้อมูลอยู่หรือไม่

บรรทัดที่ 22 คือ วนลูปข้อมูลหน่วยงานเหล่านั้น เพื่อหา Child ในลำดับชั้นถัดไป

บรรทัดที่ 23 คือ การค้นหา Child ในลำดับชั้นถัดไป

และบรรทัดที่ 25 คือ การนำ Child ที่ได้ ไปเข้าฟังก์ชัน Recursive เพื่อหา Child ในลำดับชั้นถัดไป จนกว่าจะไม่มีข้อมูล

ตอนที่ 2 จะเป็นการแสดงผล แบบ Recursive…โปรดรอติดตามนะครับ

Author : นายศักดา บุญภา (มิวสิค)