|
|
|
|
|
การใช้ JOIN Syntax แบบใหม่ มาตรฐาน SQL/92
(Performing Joins Using the SQL/92 Syntax )
|
|
|
|
|
| |
จากตัวอย่างการ 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 กัน |
|
| |
|
|
| |
|
|
|
|
|
|
|
|
|
|
พบปัญหา website , link เสีย ,แลก link,แสดงความเห็น หรือ ติดต่อเป็นสปอนเซอร์สนับสนุน
email : webmaster@oracleskill.com |
|
|
|