Використання зʼєднань

Вступ до Oracle SQL

Sara Billen

Curriculum Manager

Набір даних Chinook

ER-діаграма повного набору даних Chinook

Вступ до Oracle SQL

Обʼєднання даних з кількох таблиць

Альбоми Pearl Jam

Вступ до Oracle SQL

Зʼєднання в SQL

Типи зʼєднань:

  • Inner Join
  • Outer Joins
  • Cross Joins
  • Self Joins
Вступ до 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  |
| ...                             | ...           |
Вступ до Oracle SQL

Розбір inner join

  1. Виберіть стовпці для виводу й додайте назви таблиць
  2. У FROM перелічіть потрібні таблиці, розділені INNER JOIN
  3. Використайте ON, щоб указати стовпець для зʼєднання
SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
ON Album.ArtistId = Artist.ArtistId

Додайте інші потрібні клаузи, як-от WHERE, ORDER BY!

Вступ до 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   |
| ...         | ...         |
Вступ до Oracle SQL

USING замість ON

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

те саме, що

SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
USING (ArtistId)
  • Стовпці мають однакові назви в обох таблицях
  • Назву стовпця беріть у дужки
Вступ до Oracle SQL

Псевдоніми таблиць

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

З псевдонімами:

SELECT DISTINCT c.FirstName, c.LastName, e.FirstName, e.LastName
FROM Customer c INNER JOIN Employee e
ON c.SupportRepID = e.EmployeeID
Вступ до Oracle SQL

Зʼєднання понад двох таблиць

Таблиці Track, Album і 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)
Вступ до Oracle SQL

Зʼєднання понад двох таблиць

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 |
| ...                | ...                            | ...         |
Вступ до Oracle SQL

Давайте потренуємось!

Вступ до Oracle SQL

Preparing Video For Download...