Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL Inner Join – Cara Menggabungkan 3 Tabel di SQL dan MySQL

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di mana Klausa Untuk Memfilter Baris di MySQL

  2. Tabel SQL dengan entri daftar vs tabel SQL dengan baris untuk setiap entri

  3. Cara Memilih Baris N Teratas Per Grup di MySQL

  4. Buat Kolom Jumlah Kumulatif di MySQL

  5. PostgreSQL vs MySQL, sebuah perbandingan