24/01/2560

การใช้ JOIN ใน SQL

การทำ JOIN ใน SQL คือการนำตาราง 2 ตารางหรือมากกว่า2ตารางขึ้นไปมารวมกัน โดยเงื่อนไขการรวมจะมีดังนี้
   -INNER JOIN เลือกเฉพาะข้อมูลที่มี key ตรงกันเท่านั้นมาแสดง
   -OUTER JOIN นำข้อมูลทั้งหมดมาแสดงแม้ว่า key ไม่ตรงกัน
   -LEFT JOIN ทำการ JOIN ข้อมูลกับตารางที่อยู่ทางซ้าย
   -RIGHT JOIN ทำการ JOIN ข้อมูลกับตารางที่อยู่ทางขวา

การเขียนcode จะเป็นรูปแบบดังนี้

SELECT columns_list FROM left_table { INNER | OUTER | LEFT | RIGHT } JOIN right_table ON join_condition WHERE select_condition

 

ตัวอย่าง กำหนดให้ตาราง A และ B มีข้อมูลดังนี้
TABLE_A
------------------------
id    Name
------------------------
1     John
2     Susan
3     Tony
TABLE_B
------------------------
id    Salary
------------------------
1     23,000
2     12,000
5     32,100

ตัวอย่าง SQL Statement:
SELECT * 
FROM  TABLE_A INNER JOIN TABLE_B 
   ON  TABLE_A.id = TABLE_B.id
เพิ่มเติม ในกรณีที่ชื่อข้อมูลตรงกันอย่างเช่น id จะเห็นว่าชื่อเหมือนกันทั้งสองตาราง เราสามารถใช้คำสั่ง "USING(id)"แทน"TABLE_A.id = TABLE_B.id" ได้เลย
ผลการการ JOIN แต่ละแบบจะได้ผลดังนี้:
INNER JOIN: ผลที่ได้จะเห็นว่าข้อมูลที่ไม่ตรงทั้งใน TABLE_A และ TABLE_B จะไม่แสดง
------------------------
id   Name    Salary
------------------------
1    John     23,000
2    Susan    12,000
OUTER JOIN: จะได้ข้อมูลทั้งหมด เท่าที่จะแสดงได้ เช่น ใน TABLE_A มีข้อมูลของ Tony แต่ TABLE_B ไม่มีข้อมูลของ Tony (id 3) ดังนั้นข้อมูลที่ได้ จะมีข้อมูลของ Tony แสดงแต่ไม่มีข้อมูลเงินเดือนของ Tony
------------------------
id   Name    Salary
------------------------
1    John     23,000
2    Susan    12,000
3    Tony
5             32,100
LEFT JOIN: ข้อมูลที่ได้จะยึดข้อมูลในตารางทางซ้ายเป็นหลัก ในที่นี้ให้ TABLE_A เป็น TABLE ด้านซ้าย จะเห็นได้จากข้อมูลใน TABLE_A ซึ่งมีรายชื่อของ John, Susan และ Tony ผลที่ได้ก็จะแสดงข้อมูลของพนักงานทั้ง 3 คน แต่ข้อมูลของ Tony จะไม่มีเงินเดือนแสดง เนื่องจากไม่มีข้อมูลของ Tony อยู่ในตาราง TABLE_B
------------------------
id   Name    Salary
------------------------
1    John     23,000
2    Susan   12,000
3    Tony
RIGHT JOIN: หลักการจะเหมือนกับ LEFT JOIN แต่จะต่างกันตรงที่ข้อมูลที่ได้จะยึดเอาข้อมูลในตารางด้ายขวาเป็นหลัก
------------------------
id   Name    Salary
------------------------
1    John     23,000
2    Susan    12,000
5             32,100

Credit : https://www.gotoknow.org/posts/97459

ไม่มีความคิดเห็น:

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