วันอังคารที่ 29 มิถุนายน พ.ศ. 2553

การใช้ JOIN ใน SQL

การใช้ JOIN ใน SQL
การทำ JOIN ใน SQL คือการนำตาราง 2 ตารางมารวมกัน โดยเงื่อนไขการรวมจะมีดังนี้

INNER JOIN เลือกเฉพาะข้อมูลที่มี key ตรงกันเท่านั้นมาแสดง
OUTER JOIN นำข้อมูลทั้งหมดมาแสดงแม้ว่า key ไม่ตรงกัน
LEFT JOIN ทำการ JOIN ข้อมูลกับตารางที่อยู่ทางซ้าย
RIGHT JOIN ทำการ JOIN ข้อมูลกับตารางที่อยู่ทางขวา
ไวยากรณ์ของการ JOIN มีดังนี้

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
ผลการการ 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

เพิ่มเติม

ในกรณีที่ต้องการ Join ข้อมูลตั้งแต่ 3 table ขึ้นไป ให้เลือก Table ขึ้นมาสองอันแล้ว Join กันก่อน จากนั้นจึงค่อย Join กับ Table ที่เหลือ เช่น


SELECT Table1.id, Table2.salary, Table3.position
FROM (Table1 INNER JOIN Table2 ON Table1.id = Table2.id)
INNER JOIN Table3 ON Table1.id = Table3.id;

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

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