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

Kapan menggunakan gabungan luar kiri?

Gabung digunakan untuk menggabungkan dua tabel terkait menjadi satu.

Dalam contoh Anda, Anda dapat menggabungkan tabel Karyawan dan tabel Departemen, seperti:

SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER

Ini akan menghasilkan recordset seperti:

FNAME   LNAME   DNAME
-----   -----   -----
John    Smith   Research
John    Doe     Administration

Saya menggunakan INNER JOIN di atas. INNER JOIN s menggabungkan dua tabel sehingga hanya record dengan kecocokan di kedua tabel ditampilkan, dan mereka bergabung dalam hal ini, pada nomor departemen (bidang DNO di Karyawan, DNUMBER di tabel Departemen).

LEFT JOIN s memungkinkan Anda untuk menggabungkan dua tabel saat Anda memiliki catatan di tabel pertama tetapi mungkin tidak memiliki catatan di tabel kedua. Misalnya, Anda ingin daftar semua karyawan, ditambah tanggungan apa pun:

SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_last, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE INNER JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN

Masalahnya di sini adalah jika seorang karyawan tidak memiliki dependen, maka recordnya tidak akan muncul sama sekali -- karena tidak ada record yang cocok di tabel DEPENDENT.

Jadi, Anda menggunakan kiri join yang menyimpan semua data di "kiri" (yaitu tabel pertama) dan menarik data yang cocok di "kanan" (tabel kedua):

SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN

Sekarang kita mendapatkan semua dari catatan karyawan. Jika tidak ada dependen yang cocok untuk karyawan tertentu, dependent_first dan dependent_last bidang akan menjadi nol.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengabaikan baris duplikat saat menyisipkan

  2. php echo baris pertama tunggu/tidur lalu echo baris kedua

  3. Kesalahan sintaks atau pelanggaran akses:1059 Nama pengenal terlalu panjang

  4. Bagaimana Anda mengejek MySQL (tanpa ORM) di Node.js?

  5. hapus baris dengan fungsi ajax dan php