เขียน outer join ใน Oracle

posted on 25 Feb 2009 11:41 by nhephex  in Knowledge

.

เคยเจอปัญหาไหมครับ เช่น ต้องการ query ข้อมูล ที่ต้องการดึงเอา Description ออกมา
แล้วพบว่า บางค่ามันไม่มี ค่าให้ดึง ก็ไม่รู้จะเขียนยังไง ให้มันเอาข้อมูลมาได้ แล้วแสดงเป็น null ก็ยังดี
วิธีการแก้กรณีคือ ใช้วิธีเขียนแบบ outer join ครับ

ยกตัวอย่างเช่น table TBL_CUSTOMER มี field PROVINCE เก็บ รหัส จังหวัดที่อยู่ของลูกค้า
แต่พบว่า ข้อมูล TBL_CUSTOMER บางครั้ง เก็บค่ารหัสที่เก่าแก่ ไม่มีแล้วใน Table ที่เก็บชื่อ Province
ซึ่งคือ table TBL_M_PROVINCE

ทีนี้วิธีการเขียนให้ ถ้าหาพบ ให้ใส่ หาไม่พบ ให้ blank หรือ null ออกมา มีดังนี้ครับ

select
A.CUST_ID "Customer ID",
A.CUST_NAME "Customer Name",
A.PROVINCE "Customer Province Code",
B.PROVINCE_DESC "Province Description"
from TBL_CUSTOMER A, TBL_M_PROVINCE B
where
A.PROVINCE=B.PROVINCE (+);

นอกจากนี้ ยังมีลูกเล่นเพิ่มเติม ถ้าต้องการว่า ถ้าไม่มี ให้เขียนว่า "หาไม่เจอว่ะลูกพี่"
แทนที่จะเป็น blank หรือ null ก็ให้ใส่แบบนี้ครับ

select
A.CUST_ID "Customer ID",
A.CUST_NAME "Customer Name",
A.PROVINCE "Customer Province Code",
NVL(B.PROVINCE_DESC, 'หาไม่เจอว่ะลูกพี่') "Province Description"
from TBL_CUSTOMER A, TBL_M_PROVINCE B
where
A.PROVINCE=B.PROVINCE (+);

ลองเล่นกันดูครับ

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

Tweet

เคยใช้ Oracle แต่ว่าตอนนี้
ที่บริษัทเปลี่ยนไปใช้โปรแกรมอื่นแทนแล้วค่ะ
big smile

#1 By C-C on 2009-02-25 13:19