Lecture 5 SQL (Structured Query Language)
Multi-Table Queries (JOIN) INNER JOIN OUTER JOIN LEFT OUTER JOIN RIGHT OUTER JION FULL OUTER JION
INNER JOIN เป็นการ join ข้อมูลจาก 2 ตารางขึ้นไปโดยระบุคอลัมน์ที่มี ข้อมูลตรงกัน ผลลัพธ์ที่ได้จะแสดงเฉพาะแถวที่มีข้อมูลตรงกัน สำหรับ INNER JOIN นี้หรืออาจเรียกย่อๆ ว่า JOIN ก็ได้
OUTER JOIN เป็นการ join ข้อมูลจาก 2 ตารางขึ้นไป ขณะที่ INNER JOIN ให้ผลเฉพาะแถวที่มีข้อมูลตรงกันในคอลัมน์ที่ระบุแต่ OUTER JOIN จะนำข้อมูลในตารางทั้งสองออกมาแสดงโดยไม่สนใจว่าจะ มีข้อมูลที่ตรงกันหรือไม่ตรงกัน ซึ่งถ้าหากแถวใดมีข้อมูลที่ไม่ตรง กัน ก็จะแสดงข้อมูลในคอลัมน์นั้นเป็น NULL ไป
LEFT OUTER JOIN ( *=) เป็นการ join ข้อมูลจาก 2 ตารางขึ้นไป โดยจะถือเอาตาราง ทางซ้ายของคำว่า LEFT OUTER JOIN เป็นหลัก โดยข้อมูลทุกๆ แถวจากตารางด้านซ้ายจะถูกนำแสดง ไม่ว่าจะมีข้อมูลตรงกันกับ ตารางด้านขวาหรือไม่ก็ตาม ถ้าไม่มีข้อมูลในตารางด้านขวาที่ ตรงกันก็จะแสดงค่าเป็น NULL
RIGHT OUTER JOIN ( =*) เป็นการ join ข้อมูลจาก 2 ตารางขึ้นไป โดยจะถือเอาตาราง ทางขวาของคำว่า RIGHT OUTER JOIN เป็นหลัก โดยข้อมูล ทุกๆแถวจากตารางด้านขวาจะถูกนำแสดง ไม่ว่าจะมีข้อมูลตรงกัน กับตารางด้านซ้ายหรือไม่ก็ตาม ถ้าไม่มีข้อมูลในตารางด้านซ้าย ที่ตรงกันก็จะแสดงค่าเป็น NULL
FULL OUTER JOIN เป็นการ join ข้อมูลจาก 2 ตารางขึ้นไป โดยแสดงข้อมูลทุกแถว จากตารางที่นำมา join โดยจะบรรจุค่า null ลงไปเมื่อไม่สามารถ จับคู่ระหว่างแอตตริบิวต์ได้
การใช้งาน JOIN SELECT { column_name } [,...n] FROM { table_name } [, ...n] [ [ INNER ] | { LEFT | RIGHT | FULL} [ OUTER ] ] JOIN { table_name } ON { search_conditions}
Example: INNER JOIN แบบที่ 1 : ANSI SQL-92 Syntax SELECT b.*, p.* FROM Branch1 AS b INNER JOIN PropertyForRent1 AS p ON b.bCity = p.pCity; แบบที่ 1 : ANSI SQL-92 Syntax SELECT b.*, p.* FROM Branch1 AS b, PropertyForRent1 AS p WHERE b.bCity = p.pCity; แบบที่ 2 : Transact - SQL
Example: INNER JOIN
Example: INNER JOIN
Example: LEFT OUTER JOIN SELECT b.*, p.* FROM Branch1 AS b LEFT JOIN PropertyForRent1 AS p ON b.bCity = p.pCity; แบบที่ 1 : ANSI SQL-92 Syntax SELECT b.*, p.* FROM Branch1 AS b, PropertyForRent1 AS p WHERE b.bCity *= p.pCity; แบบที่ 2 : Transact - SQL
Example: LEFT OUTER JOIN
Example: RIGHT OUTER JOIN SELECT b.*, p.* FROM Branch1 AS b RIGHT JOIN PropertyForRent1 AS p ON b.bCity = p.pCity; แบบที่ 1 : ANSI SQL-92 Syntax SELECT b.*, p.* FROM Branch1 AS b, PropertyForRent1 AS p WHERE b.bCity =* p.pCity; แบบที่ 2 : Transact - SQL
Example: RIGHT OUTER JOIN
Example: FULL OUTER JOIN SELECT b.*, p.* FROM Branch1 AS b FULL JOIN PropertyForRent1 AS p ON b.bCity = p.pCity; (SELECT b.*, p.* FROM Branch1 AS b LEFT JOIN PropertyForRent1 AS p ON b.bCity = p.pCity) UNION FROM Branch1 AS b RIGHT JOIN PropertyForRent1 AS p ON b.bCity = p.pCity);
Example: FULL OUTER JOIN
Example: Three Table JOIN ในแต่ละสาขา ให้แสดงรหัสและชื่อพนักงานที่ดูแลบ้านเช่า พร้อมทั้งที่ตั้ง จังหวัดของแต่ละสาขา และรายละเอียดบ้านเช่าที่ถูกดูแลโดยพนักงาน แบบที่ 1 : ANSI SQL-92 Syntax SELECT b.branchNo, b.city, e.empNo, e.empName, p.propertyNo, p.street FROM Branch AS b JOIN Employee AS e ON b.branchNo = e.branchNo JOIN Property_For_Rent AS p ON e.empNo = p.empNo;
Example: Three Table JOIN แบบที่ 2 : Transact - SQL SELECT b.branchNo, b.city, e.empNo, e.empName, p.propertyNo, p.street FROM Branch AS b, Employee AS e, Property_For_Rent AS p WHERE b.branchNo = e.branchNo AND e.empNo = p.empNo
Example: Three Table JOIN