Oracle SQL การใช้ left join เพื่อแก้ปัญหา Data มีไม่ครบทุก Table
Oracle การใช้ SQL command Left join
บ่อยครั้งที่เรา join Table แบบปรกคิคือ การ
select หลายๆ table แล้ว join กันด้วย field ที่มันใช้เชื่อมโยงกัน
ยกตัวอย่างเช่น
select table1.bonus,table2.f_name from table1 , table2
where table1.fk_field=table2.fk_field;
คำสั่ง SQL command ประมาณนี้คือการ select
เพื่อ join กันแบบปรกติ โดย Data จะออกก็ต่อเมื่อ
มี ข้อมูล สอดคล้องกันทั้ง 2 table คือจะออกมาเฉพาะ
พนักงานที่มีข้อมูลใน table2 เท่านั้น
แล้วถ้ามีโจทย์ว่า อยากให้ data ออกโดยยึดตาม table1
คือ List พนักงานทุกคนออกมา ถึงแม้จะไม่มี Bonus ก็ตาม
ให้ใช้คำสั่ง join แบบ left join ตามนี้ครับ
select table1.bonus,table2.f_name from table1 left join table2
on table1.fk_field=table2.fk_field;
แบบนี้จะ list พนักงานทุกคนที่มีใน table1 ออกมา
ถ้าคนใหนมี data ใน table2 ก็จะแสดง field bonus
แต่ถ้าคนใหนไม่มี data ใน table2 ค่าของ field bonus ก็จะเป็น ว่างๆ