Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Bergabung di Beberapa Kolom

Masalah:

Anda ingin menggabungkan tabel pada beberapa kolom dengan menggunakan kunci majemuk utama di satu tabel dan kunci majemuk asing di tabel lain.

Contoh:

Basis data kami memiliki tiga tabel bernama student , enrollment , dan payment . student tabel memiliki data di kolom berikut:id (kunci utama), first_name , dan last_name .

id nama_depan nama_belakang
1 Ellie Willson
2 Tom Coklat
3 Sandra Miller

enrollment tabel memiliki data dalam kolom berikut:kunci utama (student_id dan course_code ), is_active , dan start_date .

id_siswa kode_kursus is_aktif tanggal_mulai
1 GD03 benar 2020-01-20
1 AP01 salah 10-03-2020
2 SL01 benar 05-05-2020
3 SL01 benar 01-06-2020

payment tabel memiliki data di kolom berikut:kunci asing (student_id dan course_code , kunci utama enrollment tabel), status , dan amount .

id_siswa kode_kursus status jumlah
1 GD03 dibayar 230
1 AP01 tertunda 100
2 SL01 tertunda 80
3 SL01 tertunda 110

Mari kita tunjukkan setiap nama siswa, kode kursus, dan status pembayaran serta jumlah.

Solusi:

SELECT
  s.last_name, s.first_name,
  p.course_code, p.status, p.amount
FROM enrollment e
JOIN student s
  ON s.id=e.student_id
JOIN payment p
  ON p.course_code=e.course_code
	AND p.student_id=e.student_id;
nama_belakang nama_depan kode_kursus status jumlah
Willson Ellie GD03 dibayar 230
Willson Ellie AP01 tertunda 100
Coklat Tom SL01 tertunda 80
Miller Sandra SL01 tertunda 110

Diskusi:

Jika Anda ingin mendapatkan data yang disimpan dalam tabel yang digabungkan dengan kunci majemuk yang merupakan kunci utama di satu tabel dan kunci asing di tabel lain, cukup gunakan kondisi gabung di beberapa kolom.

Dalam satu tabel gabungan (dalam contoh kita, enrollment ), kami memiliki kunci utama yang dibuat dari dua kolom (student_id dan course_code ). Di tabel kedua (payment ), kami memiliki kolom yang merupakan kunci majemuk asing (student_id dan course_code ). Bagaimana kita bisa menggabungkan tabel dengan kunci majemuk ini?

Mudah! Kita hanya perlu menggunakan JOIN klausa dengan lebih dari satu kondisi dengan menggunakan operator AND setelah kondisi pertama. Dalam contoh kami, kami menggunakan kondisi ini:

p.course_code=e.course_code AND p.student_id=e.student_id

Pada bagian pertama, kita menggunakan student_id kolom dari enrollment tabel dan student_id dari payment meja. Pada kondisi selanjutnya, kita mendapatkan course_code kolom dari enrollment tabel dan course_code dari payment tabel.

Perhatikan bahwa student_id dan course_code kolom membentuk kunci utama dalam enrollment meja. Oleh karena itu, mereka digunakan dalam payment tabel sebagai kunci asing.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menganonimkan Pengidentifikasi Tidak Langsung untuk Menurunkan Risiko ID Ulang

  2. SQL PILIH MAX

  3. Prosedur Tersimpan Khusus untuk Mendapatkan Status Cadangan Basis Data Terbaru

  4. Berapa Gaji Rata-Rata Pengembang SQL?

  5. Bongkar Database Sangat Besar