SQL (Structured Query Language)

Download Report

Transcript SQL (Structured Query Language)

SQL
(Structured Query Language)
Part 2
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;
แบบที ่ 2 : Transact - SQL
SELECT b.*, p.*
FROM
Branch1 AS b, PropertyForRent1 AS p
WHERE b.bCity = p.pCity;
Example: INNER JOIN
Example: INNER JOIN
Example: LEFT OUTER JOIN
แบบที ่ 1 : ANSI SQL-92 Syntax
SELECT b.*, p.*
FROM Branch1 AS b LEFT JOIN PropertyForRent1 AS p
ON
b.bCity = p.pCity;
แบบที ่ 2 : Transact - SQL
SELECT b.*, p.*
FROM
Branch1 AS b, PropertyForRent1 AS p
WHERE b.bCity *= p.pCity;
Example: LEFT OUTER JOIN
Example: RIGHT OUTER JOIN
แบบที ่ 1 : ANSI SQL-92 Syntax
SELECT b.*, p.*
FROM Branch1 AS b RIGHT JOIN PropertyForRent1 AS p
ON
b.bCity = p.pCity;
แบบที ่ 2 : Transact - SQL
SELECT b.*, p.*
FROM
Branch1 AS b, PropertyForRent1 AS p
WHERE b.bCity =* p.pCity;
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
(SELECT b.*, p.*
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