Batin gabungan vs outer gabungan
Join Dalam dan Luar Bergabung adalah dua dari metode gabungan SQL yang digunakan dalam pemrosesan kueri untuk database. Mereka termasuk dalam keluarga klausa gabungan (dua lainnya yang dibiarkan dan kanan bergabung). Namun, ada gabungan diri yang dapat digunakan untuk situasi khusus. Tujuan bergabung adalah untuk menggabungkan bidang menggunakan nilai umum ke dua tabel. Ini bergabung menggabungkan catatan dari beberapa tabel dalam database. Itu menciptakan set yang dihasilkan, yang dapat disimpan sebagai tabel lain.
Apa yang sedang bergabung dalam?
Operasi gabungan SQL yang paling umum digunakan adalah gabungan batin. Itu dapat dianggap sebagai jenis default gabungan yang digunakan dalam aplikasi. Bagian dalam gabungan menggunakan predikat gabungan untuk menggabungkan dua tabel. Dengan asumsi kedua tabel adalah A dan B, maka predikat gabungan akan membandingkan baris A dan B untuk mengetahui semua pasangan yang memenuhi predikat. Nilai kolom dari semua baris yang dipenuhi tabel A dan B digabungkan untuk membuat hasilnya. Ini dapat dilihat sebagai pertama-tama mengambil salib bergabung (produk cartesian) dari semua catatan dan kemudian mengembalikan hanya catatan yang memenuhi predikat gabungan. Namun, pada kenyataannya, produk Cartesian tidak dihitung karena sangat tidak efisien. Hash gabungan atau urut-urut gabung digunakan, sebagai gantinya.
Apa itu outer gabungan?
Tidak seperti, bergabung dalam, outer gabungan menyimpan semua catatan bahkan jika tidak dapat menemukan catatan yang cocok. Itu berarti gabungan luar memang membutuhkan catatan untuk menemukan catatan yang cocok untuk itu muncul di hasilnya. Sebaliknya, itu akan mengembalikan semua catatan, tetapi catatan yang tidak tertandingi akan memiliki nilai nol. Gabungan luar dibagi menjadi tiga sub kategori. Mereka bertuliskan luar, bergabung dengan luar kanan dan gabungan luar lengkap. Diferensiasi ini didasarkan pada tabel mana (tabel kiri, tabel kanan atau kedua tabel) baris disimpan saat catatan yang tidak tertandingi ditemukan. Gabungan luar kiri (juga dikenal sebagai Simply Left Join) menyimpan semua catatan dari meja kiri. Itu berarti, bahkan jika angka pencocokan angka nol, maka ia masih akan memiliki catatan di tabel hasil, tetapi akan memiliki nilai nol untuk semua kolom b. Dengan kata lain, semua nilai dari tabel kiri dikembalikan dengan nilai yang cocok dari tabel kanan (atau nilai nol saat tidak tertandingi). Jika nilai dari beberapa baris dari tabel kiri dicocokkan dengan satu baris dari tabel kanan, baris dari tabel kanan akan diulang sesuai kebutuhan. Gabungan luar kanan hampir mirip dengan gabungan luar kiri, tetapi pengobatan tabel dihormati. Itu berarti hasilnya akan memiliki semua baris tabel kanan setidaknya sekali dengan nilai tabel kiri yang cocok (dan nilai nol untuk nilai kanan yang tidak tertandingi). Gabungan luar lengkap lebih komprehensif daripada gabungan luar kiri dan kanan. Itu menghasilkan pengaruh efek menerapkan kedua dan kanan luar bergabung bersama.
Apa perbedaan antara bergabung dalam batin dan outer gabungan?
Join batin tidak menyimpan baris yang tak tertandingi dalam hasilnya, tetapi gabungan luar akan menyimpan semua catatan dari setidaknya satu tabel (tergantung pada gabungan luar mana yang telah digunakan). Jadi, perilaku tidak memiliki informasi yang ada pada baris yang tak tertandingi dalam tabel hasil tidak diinginkan, Anda harus selalu menggunakan salah satu gabungan luar (sebagai pengganti gabungan batin). Bergabung dalam bagian dalam mungkin tidak menghasilkan hasil jika tidak ada kecocokan yang ditemukan. Tapi gabungan luar akan selalu menghasilkan tabel yang dihasilkan, bahkan tanpa baris yang cocok. Join batin akan selalu mengembalikan tabel dengan nilai (jika dikembalikan). Tapi outer gabungan dapat menghasilkan tabel dengan nilai nol.