
Last Updated (Sunday, 09 August 2009 20:22) Tuesday, 13 January 2009 15:38
จาก ตัวอย่างการ JOIN ในเรื่อง Type of Oracle Join เป็น syntax การ join ที่เราคุ้นเคย และ ใช้กันมานาน จนเป็น syntax ที่ classic ซึ่ง SQL JOIN syntax ที่ใช้อยู่ เป็นไปตามมาตรฐาน ANSI SQL/86
แต่ เวลาผ่านไป ความต้องการความยืดหยุ่น และ ความง่ายขึ้นในการ query ข้อมูล จึงได้มี SQL syntax ใหม่ๆ ออกมาเป็นมาตรฐาน ANSI SQL/92 ซึ่งทาง Oracle เอง ก็ support มาตรฐานนี้ตั้งแต่ Oracle 9i เป็นต้นมา
เราจะมาดู syntax การ join กัน เปรียบเทียบระหว่าง ANSI SQL/86 กับ SQL/92
Equi- Join
SQL/86
SELECT e.ename,d.dname
FROM emp e , dept d
WHERE e.deptno = d.deptno ;
SQL/92
SELECT e.ename,d.dname
FROM emp e JOIN dept d
USING (deptno) ;
ซึ่งจะได้ผลลัพธ์ออกมาเหมือนกัน แต่การใช้ equi-join แบบ SQL/92 ต้องระวัง 2 เรื่อง
1. Query นั้นต้องเป็น equi-join
2. column ที่ใช้ในการ join นั้น ต้องมีชื่อเหมือนกัน
Natural Join
Natural Join ก็คือ Equi-Join ที่ไม่ได้ระบุว่า จะเอา column อะไร มาเป็นตัวเงื่อนไข ในการจับ match กัน ซึ่ง Oracle จะไปดูว่า column ของตาราง ที่จะนำมา join กัน ว่ามี column อะไรที่ชื่อเหมือนกัน มันก็จะจับ column นั้นแหละ มาเป็นตัว match ในการ join เช่น
SELECT e.ename,d.dname
FROM emp e NATURAL JOIN dept d ;
จากตัวอย่างข้างบน ผลจะเหมือน equi-join เพราะ Oracle จะจับเอา column ชื่อ deptno ซึ่งมีอยู่ทั้ง 2 ตาราง มา match กัน
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


