Sử dụng join

Giới thiệu về Oracle SQL

Sara Billen

Curriculum Manager

Bộ dữ liệu Chinook

Sơ đồ ER đầy đủ của bộ dữ liệu Chinook

Giới thiệu về Oracle SQL

Kết hợp dữ liệu từ nhiều bảng

Album của Pearl Jam

Giới thiệu về Oracle SQL

SQL joins

Các loại join:

  • Inner Join
  • Outer Join
  • Cross Join
  • Self Join
Giới thiệu về Oracle SQL

Inner join

SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
ON  Album.ArtistId = Artist.ArtistId
| Album.Title                     | Artist.Name   |
|---------------------------------|---------------|
| Black Sabbath                   | Black Sabbath |
| Black Sabbath Vol. 4 (Remaster) | Black Sabbath |
| The Cream Of Clapton            | Eric Clapton  |
| Unplugged                       | Eric Clapton  |
| ...                             | ...           |
Giới thiệu về Oracle SQL

Phân tích inner join

  1. Chọn cột cần xuất và kèm tên bảng
  2. Trong FROM, liệt kê các bảng, ngăn cách bằng INNER JOIN
  3. Dùng ON để chỉ định cột dùng để join
SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
ON Album.ArtistId = Artist.ArtistId

Thêm các mệnh đề cần thiết khác như WHERE, ORDER BY!

Giới thiệu về Oracle SQL

Inner join

SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
ON  Album.ArtistId = Artist.ArtistId
WHERE Artist.Name = 'Pearl Jam'
| Album.Title | Artist.Name |
|-------------|-------------|
| Pearl Jam   | Pearl Jam   |
| Riot Act    | Pearl Jam   |
| Ten         | Pearl Jam   |
| ...         | ...         |
Giới thiệu về Oracle SQL

Dùng USING thay cho ON

SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
ON  Album.ArtistId = Artist.ArtistId

giống với

SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
USING (ArtistId)
  • Cột phải trùng tên ở cả hai bảng
  • Đặt tên cột trong ngoặc đơn
Giới thiệu về Oracle SQL

Bí danh bảng (aliases)

SELECT DISTINCT Customer.FirstName, Customer.LastName, 
                Employee.FirstName, Employee.LastName
FROM Customer INNER JOIN Employee
ON Customer.SupportRepID = Employee.EmployeeID

Với bí danh:

SELECT DISTINCT c.FirstName, c.LastName, e.FirstName, e.LastName
FROM Customer c INNER JOIN Employee e
ON c.SupportRepID = e.EmployeeID
Giới thiệu về Oracle SQL

Join hơn hai bảng

Bảng Track, Album và Artist

SELECT t.Name AS Track, al.Title AS Album, ar.Name AS Artist
FROM 
    Track t INNER JOIN Album al USING (AlbumId)
    INNER JOIN Artist ar USING (ArtistId)
Giới thiệu về Oracle SQL

Join hơn hai bảng

SELECT t.Name as Track, al.Title as Album, ar.Name as Artist
FROM 
    Track t INNER JOIN Album al USING (AlbumId)
    INNER JOIN Artist ar USING (ArtistId)
| Track              | Album                          | Artist      |
|--------------------|--------------------------------|-------------|
| The Legacy         | A Matter of Life and Death     | Iron Maiden |
| Lord of Light      | A Matter of Life and Death     | Iron Maiden |
| Out of the Shadows | A Matter of Life and Death     | Iron Maiden |
| ...                | ...                            | ...         |
Giới thiệu về Oracle SQL

Ayo berlatih!

Giới thiệu về Oracle SQL

Preparing Video For Download...