• oraclebytee
  • ranking : สมาชิกทั่วไป
  • วันที่สร้าง : 2013-11-08
  • จำนวนเรื่อง : 23
  • จำนวนผู้ชม : 35636
  • ส่ง msg :
  • โหวต 1 คน
Oracle Training by อ.ตี๋
วิทยากร,ที่ปรึกษา,นักเขียน,นักทำระบบฐานข้อมูล Oracle Database. ผู้ได้รับใบรับรองในระดับ Oracle Certify Professional และ เป็นผู้ประกอบการเครือข่ายกับ Software Park ประเทศไทย ติดต่อ Oracle Training
Permalink : http://oknation.nationtv.tv/blog/OracleTrainingByTee
วันพุธ ที่ 13 พฤศจิกายน 2556
Posted by oraclebytee , ผู้อ่าน : 11418 , 23:34:17 น.  
หมวด : วิทยาศาสตร์/ไอที

พิมพ์หน้านี้
โหวต 0 คน


ต่อกันตอนที่สองนะครับ  หากลืมแล้วว่ามีตารางอะไรและมีข้อมูลอะไรอยู่ในตารางนั้น ก็ย้อนกลับไปอ่านตอนแรกละกันครับ

Natural join

Natural Join ก็คือ Equi-Join  แค่ในการเขียน SQL ไม่ต้องระบุว่าจะเอา column อะไรมาเป็นตัวเทียบเท่ากับกัน   Oracle Database จะไปดูว่า column ใดที่ชื่อเหมือนกันในทั้ง 2 ตาราง  มันก็จะอนุมานเอา column นั้น มาเป็นใช้เป็นตัวเท่ากับ ในการ join เช่น

SELECT e.ename,d.dname
FROM   emp e NATURAL JOIN dept d  ;

ผลลัพธ์ข้างบนจะเหมือน equi-join เพราะ Oracle จะจับเอา column ชื่อ deptno ซึ่งมีอยู่ทั้ง 2 ตาราง มา match กันให้อัตโนมัติ

 

Outer join

เป็นการ join ที่ขยายมาจาก inner join  คือ สามารถแสดงข้อมูลแถวที่ไม่สามารถจับคู่เงื่อนไข = กับอีกตาราง ซึ่งปกติจะไม่แสดงเวลาใช้ inner join

สามารถแบ่ง outer join ออกเป็นประเภทย่อยๆ โดยยึดตารางใดตารางหนึ่งเป็นหลักเมื่อเขียนเงื่อนไข WHERE  เช่น

Left outer join

จะแสดงแถวในตารางที่อยู่ทางซ้ายมือเงื่อนไข WHERE ออกมาทั้งหมด ส่วนตารางทางขวามือ ก็จะ return ค่าเป็น NULL  สำหรับแถวที่เงื่อนไขไม่ match กับตารางหลัก เพื่อเติมเต็มข้อมูล  ซึ่งจะใช้เครื่องหมาย (+) ระบุว่าเป็นตารางที่จะเติม NULL ให้เต็ม

SELECT d.department_id,e.last_name
FROM   departments d , employees e
WHERE  d.department_id = e.department_id(+)
ORDER  by d.department_id ;

 

Right outer join 

ตรงข้ามกับ Left Outer Join  การแสดงข้อมูลจะยึดเอาตารางที่อยู่ทางขวามือของเงื่อนไข WHERE เป็นหลัก โดยจะแสดงข้อมูลออกมาทั้งหมด แม้ว่าตารางทางซ้ายมือของ WHERE จะไม่ match กับเงื่อนไข ส่วนตารางทางซ้ายมือก็จะ return ค่าเป็น NULL ออกมาเติมเต็ม

SELECT d.department_id,e.last_name
FROM   departments d , employees e
WHERE  d.department_id(+) = e.department_id
ORDER by d.department_id ;

 

Full outer join

จะแสดงแถวในตารางที่ อยู่ทั้งทางซ้ายและขวา ของเงื่อนไข WHERE ออกมาทั้งหมด ตารางไหนไม่ match กับเงื่อนไข ก็จะ return ค่าออกมาเป็น NULL

SELECT d.department_id,e.last_name
FROM   departments d FULL OUTER JOIN employees e
ON     d.department_id = e.department_id
ORDER by d.department_id ;

หมายเหตุ การใช้เครื่องหมาย (+) ตามหลังตารางที่เป็นฟากส่วนที่หายไปนั้น (ฟากที่ไม่ใช่หลักของ outer join ) เป็น syntax แบบเก่าตามมาตรฐาน SQL ANISI/86 ซึ่งจะยังไม่มี FULL OUTER JOIN
ทว่า  syntax แบบใหม่ตามมาตรฐาน SQL ANSI/92 จะมี FULL OUTER JOIN แล้ว และรูปแบบ syntax จะไม่ใช้ (+)

* บทความนี้คัดสรรมาจากเวบของผม www.oracleskill.com




แสดงความคิดเห็น


ถึง บล็อกเกอร์ ทุกท่าน โปรดอ่าน
   ด้วยทาง บริษัท จีเอ็มเอ็ม แกรมมี่ จำกัด (มหาชน) ได้ติดต่อขอความร่วมมือ มายังเว็บไซต์และเว็บบล็อกต่าง ๆ รวมไปถึงเว็บบล็อก OKnation ห้ามให้มีการเผยแพร่ผลงานอันมีลิขสิทธิ์ ของบริษัท จีเอ็มเอ็ม แกรมมี่ฯ บนเว็บ blog โดยกำหนดขอบเขตของสิ่งที่ห้ามทำ และสามารถทำได้ ดังนี้
ห้ามทำ
- การใส่ผลงานเพลงต้นฉบับให้ฟัง ทั้งแบบควบคุมเพลงได้ หรือซ่อนเป็นพื้นหลัง และทั้งที่อยู่ใน server ของคุณเอง หรือ copy code คนอื่นมาใช้
- การเผยแพร่ file ให้ download ทั้งที่อยู่ใน server ของคุณเอง หรือฝากไว้ server คนอื่น
สามารถทำได้
- เผยแพร่เนื้อเพลง ต้องระบุชื่อเพลงและชื่อผู้ร้องให้ชัดเจน
- การใส่เพลงที่ร้องไว้เอง ต้องระบุชื่อผู้ร้องต้นฉบับให้ชัดเจน
จึงเรียนมาเพื่อโปรดปฎิบัติตาม มิเช่นนั้นทางบริษัท จีเอ็มเอ็ม แกรมมี่ฯ จะให้ฝ่ายดูแลลิขสิทธิ์ ดำเนินการเอาผิดกับท่านตามกฎหมายละเมิดลิขสิทธิ์
OKNATION



กฎกติกาการเขียนเรื่องและแสดงความคิดเห็น
1 การเขียน หรือแสดงความคิดเห็นใด ๆ ต้องไม่หมิ่นเหม่ หรือกระทบต่อสถาบันชาติ ศาสนา และพระมหากษัตริย์ หรือกระทบต่อความมั่นคงของชาติ
2. ไม่ใช้ถ้อยคำหยาบคาย ดูหมิ่น ส่อเสียด ให้ร้ายผู้อื่นในทางเสียหาย หรือสร้างความแตกแยกในสังคม กับทั้งไม่มีภาพ วิดีโอคลิป หรือถ้อยคำลามก อนาจาร
3. ความขัดแย้งส่วนตัวที่เกิดจากการเขียนเรื่อง แสดงความคิดเห็น หรือในกล่องรับส่งข้อความ (หลังไมค์) ต้องไม่นำมาโพสหรือขยายความต่อในบล็อก และการโพสเรื่องส่วนตัว และการแสดงความคิดเห็น ต้องใช้ภาษาที่สุภาพเท่านั้น
4. พิจารณาเนื้อหาที่จะโพสก่อนเผยแพร่ให้รอบคอบ ว่าจะไม่เป็นการละเมิดกฎหมายใดใด และปิดคอมเมนต์หากจำเป็นโดยเฉพาะเรื่องที่มีเนื้อหาพาดพิงสถาบัน
5.การนำเรื่อง ภาพ หรือคลิปวิดีโอ ที่มิใช่ของตนเองมาลงในบล็อก ควรอ้างอิงแหล่งที่มา และ หลีกเลี่ยงการเผยแพร่สิ่งที่ละเมิดลิขสิทธิ์ ไม่ว่าจะเป็นรูปแบบหรือวิธีการใดก็ตาม 6. เนื้อหาและความคิดเห็นในบล็อก ไม่เกี่ยวข้องกับทีมงานผู้ดำเนินการจัดทำเว็บไซต์ โดยถือเป็นความรับผิดชอบทางกฎหมายเป็นการส่วนตัวของสมาชิก
คลิ้กอ่านเงื่อนไขทั้งหมดที่นี่"
OKnation ขอสงวนสิทธิ์ในการปิดบล็อก ลบเนื้อหาและความคิดเห็น ที่ขัดต่อความดังกล่าวข้างต้น โดยไม่ต้องชี้แจงเหตุผลใดๆ ต่อเจ้าของบล็อกและเจ้าของความคิดเห็นนั้นๆ
   

กลับไปหน้าที่แล้ว กลับด้านบน