Birleştirmeler (joins) kullanma

Oracle SQL'ye Giriş

Sara Billen

Curriculum Manager

Chinook veri kümesi

Tüm Chinook veri kümesi ER diyagramı

Oracle SQL'ye Giriş

Birden fazla tablodan veri birleştirme

Pearl Jam Albümleri

Oracle SQL'ye Giriş

SQL birleştirmeleri (joins)

Birleştirme türleri:

  • İç birleştirme (Inner Join)
  • Dış birleştirmeler (Outer Joins)
  • Çapraz birleştirmeler (Cross Joins)
  • Öz birleştirmeler (Self Joins)
Oracle SQL'ye Giriş

İç birleştirme (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'ye Giriş

İç birleştirmenin adım adım açıklaması

  1. Çıktı sütunlarını seçin ve tablo adlarını ekleyin
  2. FROM içinde tabloları INNER JOIN ile ayırarak yazın
  3. Birleştirme sütununu ON ile tanımlayın
SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
ON Album.ArtistId = Artist.ArtistId

WHERE, ORDER BY gibi gerekli diğer ifadeleri ekleyin!

Oracle SQL'ye Giriş

İç birleştirme (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'ye Giriş

ON yerine USING

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

aynı şununla

SELECT Album.Title, Artist.Name
FROM Album INNER JOIN Artist
USING (ArtistId)
  • Sütun adları iki tabloda da aynı olmalıdır
  • Sütun adını parantez içinde yazın
Oracle SQL'ye Giriş

Tablo takma adları (aliases)

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

Takma adlarla:

SELECT DISTINCT c.FirstName, c.LastName, e.FirstName, e.LastName
FROM Customer c INNER JOIN Employee e
ON c.SupportRepID = e.EmployeeID
Oracle SQL'ye Giriş

İkiden fazla tabloyu birleştirme

Parça, albüm ve sanatçı tabloları

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'ye Giriş

İkiden fazla tabloyu birleştirme

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'ye Giriş

Hadi pratik yapalım!

Oracle SQL'ye Giriş

Preparing Video For Download...