Použití joinů

Introduction to Oracle SQL

Sara Billen

Curriculum Manager

Datová sada Chinook

Diagram ER celé datové sady Chinook

Introduction to Oracle SQL

Kombinování dat z více tabulek

Alba Pearl Jam

Introduction to Oracle SQL

Joiny v SQL

Typy joinů:

  • Inner Join
  • Outer Joins
  • Cross Joins
  • Self Joins
Introduction to 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  |
| ...                             | ...           |
Introduction to Oracle SQL

Rozbor inner joinu

  1. Vyberte výstupní sloupce a uveďte názvy tabulek
  2. V klauzuli FROM uveďte příslušné tabulky oddělené klíčovým slovem INNER JOIN
  3. Pomocí ON definujte sloupec pro spojení
SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
ON Album.ArtistId = Artist.ArtistId

Přidejte další potřebné klauzule, jako WHERE nebo ORDER BY!

Introduction to 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   |
| ...         | ...         |
Introduction to Oracle SQL

`USING` místo `ON`

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

stejné jako

SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
USING (ArtistId)
  • Sloupce musí mít v obou tabulkách stejný název
  • Název sloupce uzavřete do závorek
Introduction to Oracle SQL

Aliasy tabulek

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

S aliasy:

SELECT DISTINCT c.FirstName, c.LastName, e.FirstName, e.LastName
FROM Customer c INNER JOIN Employee e
ON c.SupportRepID = e.EmployeeID
Introduction to Oracle SQL

Spojení více než dvou tabulek

Tabulky Track, Album a 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)
Introduction to Oracle SQL

Spojení více než dvou tabulek

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 |
| ...                | ...                            | ...         |
Introduction to Oracle SQL

Lass uns üben!

Introduction to Oracle SQL

Preparing Video For Download...