
Last Updated (Saturday, 08 August 2009 18:36) Saturday, 08 August 2009 16:57
ชื่อก็บอกแล้วว่า Self Join ตรงๆตัว ก็คือการ Join ภายในตารางเดียวกัน เนื่องจากการออกแบบตารางนั้น มี column อย่างน้อย 2 column มีความสัมพันธ์ซึ่งกันและกัน
เราสามารถ Join ตัวเองได้โดยการเอาตารางเดียวกันนี้แหละ ทำให้มันดูเป็น 2 ตาราง โดยตั้งชื่อ alias (ชื่อเล่น) มันจึงมองเหมือนเป็นตาราง 2 ตาราง มา join กัน แบบปกติ
ตัวอย่างเช่น ใน ตาราง emp เราสังเกตเห็นว่า มี column ชื่อ empno กับ mgr อยู่ มีความสัมพันธ์คือ พนักงานคนไหน (empno) มีใครเป็นหัวหน้า (mgr) ซึ่งทั้ง empno กับ mgr มันก็คือ รหัสพนักงาน เหมือนกัน น่ะแหละ ถ้าเราอยากรู้ว่า หัวหน้า ชื่ออะไร เราก็เอา mgr ไปดูว่ามันคือ empno ของ พนักงาน ชื่ออะไร พนักงานคนนั้นแหละ เป็นหัวหน้า ของ พนักงานระดับล่าง
ถ้าดูจากข้อมูล ในตาราง เราจะเห็นว่า ...
พนักงานรหัส 7369 ชื่อ นาย SMITH มีหัวหน้า ที่มีรหัสพนักงาน หมายเลข 7902 ... อยากรู้ชื่อหัวหน้าจัง เรา ก็ต้องวิ่งไปดู รหัสพนักงาน empno หมายเลข 7902
พนักงานรหัส 7902 ก็คือ นาย FORD ซึ่งนายคนนี้ มีหัวหน้าอีกที เ ป็นพนักงานหมายเลข 7566 (ซึ่งหัวหน้าคนนั้น ก็คือนาย JONES)
เราสามารถเขียน SQL ดูว่า พนักงานแต่ละคน มีหัวหน้าชื่ออะไร ได้ดังนี้
SELECT e.empno as "emp_id", e.ename as "worker_name" ,
e.mgr as "manager_emp_id", m.ename as "manager_name"
FROM emp e , emp m
WHERE e.mgr = m.empno ;
oracle database table oracle database data using pl/sql index oracle tutorial password oracle thailand oracle training thailand database administrator oracle thai oracle dba oracle training oracle consulting oracle consultance thai oracle consultance oracle consulting thailand mysql tuning indexes statistics join column migration rman tables production


