Saat Anda bekerja dengan database Anda, Anda mungkin perlu mengumpulkan data dari beberapa tabel yang berbeda. Artikel ini akan menunjukkan caranya.
Saya telah menulis tentang gabungan SQL di sini dan di sini, tetapi mari luangkan waktu sejenak untuk meninjau cara kerja gabungan terlebih dahulu, dan khususnya sintaks khusus untuk MySQL.
Pernyataan Gabung SQL
Gabung adalah pernyataan yang memungkinkan Anda menggabungkan dua tabel, mencocokkan baris yang terkait satu sama lain, dan hanya menyimpan baris yang dapat dicocokkan, tidak menyimpan baris yang tidak berpasangan.
SELECT * FROM table1
INNER JOIN table2
ON table1.id = table2.id;
SELECT ... FROM
pernyataan menunjukkan yang merupakan tabel pertama, kemudian nama tabel kedua ditulis tepat setelah INNER JOIN
kata kunci.
Bagaimana dua tabel harus digabungkan ditulis dalam ON
penyataan. Dalam hal ini kedua tabel digabungkan menggunakan hubungan table1.id = table2.id
.
Dimungkinkan untuk menggunakan beberapa pernyataan gabungan untuk menggabungkan lebih dari satu tabel secara bersamaan.
SELECT *
FROM table1
INNER JOIN table2
ON table1.id = table2.id
INNER JOIN table3
ON table2.id = table3.id;
Untuk melakukan itu, Anda menambahkan INNER JOIN
kedua pernyataan dan yang kedua ON
pernyataan untuk menunjukkan tabel ketiga dan hubungan kedua.
Mari kita bicara sejenak tentang hubungan yang dapat Anda miliki di antara tabel dan mengapa Anda mungkin ingin menggabungkan tiga tabel.
Hubungan Antar Tabel dalam SQL
Saat Anda memiliki tabel yang saling terkait, hubungan mereka dapat berupa salah satu dari berbagai jenis.
satu-ke-banyak
Dalam jenis hubungan satu-ke-banyak, satu baris tabel pertama dapat dikaitkan dengan beberapa baris tabel kedua.
Dalam database relasional ini dapat diimplementasikan dengan tabel kedua yang memiliki first_table_id
kolom yang menyatakan baris mana dari tabel pertama yang terkait dengan baris tersebut.
banyak-ke-satu
Dalam jenis hubungan banyak-ke-satu, satu baris tabel pertama dapat dikaitkan dengan satu baris tabel kedua, dan satu baris tabel kedua dapat dikaitkan dengan beberapa baris tabel pertama.
Dalam database relasional ini dapat diimplementasikan dengan tabel pertama yang memiliki second_table_id
kolom yang menyatakan ke baris mana dari tabel kedua baris tersebut terkait.
banyak-ke-banyak
Dalam hal ini beberapa baris terkait dengan beberapa baris.
Jenis hubungan ini tidak dapat direpresentasikan sebagaimana adanya dengan tabel SQL – Anda perlu menambahkan tabel penghubung antara dua tabel sehingga hanya hubungan banyak-ke-satu dan satu-ke-banyak yang ada di antara tabel.
Setiap baris tabel di tengah mewakili satu hubungan antara baris tabel kiri dan baris tabel kanan.
Dalam praktiknya di MySQL, tabel tengah itu akan memiliki kolom untuk first_table_id
dan kolom untuk second_table_id
, dengan setiap kombinasi unik.
Berlatih Bergabung dengan Tabel SQL
Mari kita bayangkan kita memiliki database organisasi, di mana kita memiliki tabel dengan tim (nama mereka, dan info pengenal lainnya), dan tabel dengan proyek (nama, kemajuan, dan sebagainya).
id | nama_tim | khusus |
---|---|---|
1 | Pelempar Pisang | Pisang |
2 | Penggiling kayu | Menggerogoti kayu |
3 | Gajah Merah Muda | Menginjak tanah |
4 | Kentang empuk | Kerja dan tidur |
id | nama_proyek | kemajuan |
---|---|---|
1 | Bangunan bendungan | Diperlukan penggergajian kayu dan penggerusan tanah lagi |
2 | Kue Pisang | Seseorang memakan semua pisang |
3 | Riset tidur | Banyak tidur tidak cukup penelitian |
Karena sebuah tim dapat mengerjakan beberapa proyek, dan sebuah proyek dapat dikerjakan oleh beberapa tim, ada juga tabel ketiga yang melacak kecocokan proyek-tim.
project_id | group_id |
---|---|
1 | 2 |
1 | 3 |
2 | 1 |
3 | 1 |
3 | 2 |
3 | 3 |
3 | 4 |
Kita dapat menggunakan JOIN
pernyataan untuk menyatukan semuanya ketika kita perlu melihat info dari tabel dengan cara yang dapat dibaca manusia, seperti ini:
SELECT
teams.team_name AS team_name,
projects.project_name AS project_name
FROM TABLE teams
INNER JOIN matches
ON teams.id = matches.team_id
INNER JOIN matches
ON matches.project_id = projects.id
ORDER BY teams.id;
Kami memilih kolom mana yang akan ditampilkan dari setiap tabel dengan SELECT
pernyataan.
Kami menentukan bagaimana baris tabel akan digabungkan dengan ON
pernyataan.
Dan kami mengurutkan baris sesuai keinginan kami dengan ORDER BY
pernyataan.
Tombol ON
pernyataan teams.id = matches.team_id
dan matches.projects_id = projects.id
artinya baris digabungkan menggunakan baris matches
meja. Setiap baris tabel output memiliki nama proyek dan nama tim yang digabungkan menggunakan pasangan id proyek dan id tim di matches
tabel.
Tabel output akan terlihat seperti di bawah ini.
Nama_tim | Nama_proyek |
---|---|
Pelempar Pisang | Kue Pisang |
Pelempar Pisang | Penelitian Tidur |
Penggiling kayu | Bangunan Bendungan |
Penggiling kayu | Penelitian Tidur |
Gajah Merah Muda | Bangunan Bendungan |
Gajah Merah Muda | Bangunan Bendungan |
Kentang empuk | Penelitian Tidur |
Tidak ada kolom langsung dari matches
meja. matches
tabel tidak ditampilkan di output tetapi digunakan sebagai instruksi tentang cara menggabungkan baris teams
dan projects
tabel.
Kesimpulan
JOIN
pernyataan memungkinkan Anda bergabung bersama satu atau lebih tabel. Itu harus digunakan bersama dengan ON
pernyataan untuk menentukan hubungan antara baris tabel dan baris tabel yang berbeda.
Dalam artikel ini Anda telah mempelajari cara menggunakan JOIN
pernyataan untuk menggabungkan tiga tabel yang berbeda.