SQL Subquery Bergabung dengan Outer Query

Sql Subquery Bergabung Dengan Outer Query



Saat bekerja dengan database relasional, Anda perlu menguasai cara memanipulasi dan menggabungkan kueri untuk melakukan tugas yang Anda inginkan. Itulah mengapa setiap mesin basis data relasional mengimplementasikan rasa bahasa SQLnya dengan berusaha menyediakan fitur luar biasa, efisiensi, dan kemudahan penggunaan bagi penggunanya.

Salah satu fitur SQL yang paling kuat adalah subqueries. Subkueri adalah sekumpulan kueri bersarang di dalam kueri yang lebih besar dan kompleks. Subkueri memungkinkan Anda mengambil data atau melakukan operasi yang lebih kompleks sebagai satu kesatuan.







Kita dapat menggunakan subkueri untuk melakukan pemfilteran data, pengurutan, agregasi pada banyak tabel, dan lainnya.



Namun, fitur lain yang tersembunyi di bawah subqueries SQL dikenal sebagai subquery joins. Ini mirip dengan subkueri; sebaliknya, mereka adalah gabungan yang memungkinkan Anda menggunakan subkueri di dalam kueri luar untuk menggabungkan tabel bersama.



Jika kepala Anda pusing, jangan khawatir karena gabungan subquery bisa jadi sulit untuk dikuasai, terutama di awal. Namun, tutorial ini mencoba memecah gabungan subquery dalam langkah-langkah dasar tanpa membiarkan terlalu banyak peluang.





Perlu diingat bahwa kami berasumsi bahwa Anda bukan orang baru di SQL, SQL Joins, SQL Subqueries, atau semacamnya. Namun, jika ya, periksa tutorial kami tentang topik tersebut untuk menemukan lebih banyak.

Kuasai SQL Outer Joins

Jika Anda ingin memahami cara bekerja dengan gabungan subquery, mempelajari cara bekerja dengan gabungan luar adalah faktor kuncinya.



Jika Anda tidak terbiasa, gabungan luar SQL memungkinkan Anda mengambil semua baris dari satu tabel dan baris yang cocok dari tabel kedua. Ini sedikit lebih kompleks dari itu, termasuk gabungan luar kiri, gabungan luar kanan, gabungan luar penuh, dll.

Dalam gabungan luar kiri SQL, kueri mengembalikan semua baris dari tabel kiri dan baris yang cocok dari tabel kanan. Kueri menyertakan nilai NULL di kolom hasil jika tidak ada baris yang cocok di tabel kanan.

Dalam kasus gabungan luar kanan, kueri mengembalikan semua baris dari tabel kanan tetapi hanya baris yang cocok dari tabel kiri. Demikian pula, kueri menyertakan nilai NULL jika tidak ada baris yang cocok dari tabel kiri.

Akhirnya, kami memiliki gabungan luar penuh. Penggabungan ini mengembalikan semua baris dari tabel kanan dan kiri dan nilai NULL untuk rekaman yang tidak cocok.

Subquery SQL Bergabung

Sekarang setelah kita mengerti tentang subquery SQL, mari kita bicara tentang penggabungan subquery. Penggabungan subkueri memungkinkan kita untuk menggunakan subkueri dalam kueri luar untuk menggabungkan tabel.

Jika Anda bertanya, apakah itu? Ya, hanya itu yang dilakukan oleh gabungan subquery.

Untuk mendemonstrasikan ini dengan lebih baik, ambil contoh sintaks berikut yang ditunjukkan berikut ini:

PILIH *
DARI tabel1
GABUNG LUAR KIRI (
PILIH kolom1, kolom2
DARI tabel2
) subkueri SEBAGAI
ON table1.column3 = subquery.column1;


Dalam sintaks sebelumnya, kami memilih semua kolom dari tabel satu menggunakan gabungan luar kiri untuk menggabungkannya dengan subquery. Peran subquery adalah untuk mengambil kolom yang ditentukan dari Tabel 2. Kami kemudian menggabungkannya dengan Tabel 1 pada kondisi kolom 2 dari Tabel 1 dan kolom 1 dari subquery.

Contoh Praktis:

Secara teoritis, tampaknya kurang intuitif tetapi mari kita ambil skenario dunia nyata dengan mengambil database Sakila.

Misalkan kita ingin mengambil daftar semua film di database dan bahasanya masing-masing. Bahasa film disimpan di tabel bahasa, dan nama film disimpan di tabel film.

Namun, tabel film memiliki kunci asing yang disebut kolom “language_id” dari tabel bahasa. Oleh karena itu, kita dapat menggunakan subquery join dengan left outer join untuk menggabungkan dua tabel bersama seperti yang ditunjukkan dalam kueri berikut:

SELECT f.title, l.name bahasa AS
DARI film f
GABUNG LUAR KIRI (
PILIH language_id, nama
DARI bahasa
) AS l
AKTIF f.language_id = l.language_id;


Dalam kueri contoh sebelumnya, kami memilih kolom judul dari tabel film dan kolom nama dari tabel bahasa.

Kami kemudian menggunakan subkueri untuk memilih language_id dan kolom nama dari tabel bahasa. Langkah selanjutnya adalah menggabungkannya dengan tabel film dengan syarat language_id dari tabel film sama dengan language_id dari tabel bahasa.

Untuk memastikan bahwa semua film sudah termasuk dalam hasil, kita perlu menggunakan left outer join yang terdiri dari semua hasil dari tabel kiri yang dalam hal ini adalah tabel film.

Contoh keluarannya adalah sebagai berikut:


Kita juga bisa melakukan hal yang sama dengan right outer join. Sintaksnya adalah sebagai berikut:

PILIH *
DARI tabel1
GABUNG KELUAR KANAN (
PILIH kolom1, kolom2
DARI tabel2
) subkueri SEBAGAI
ON table1.column3 = subquery.column1;


Ini berperilaku serupa tetapi menyertakan semua catatan di tabel kanan bahkan jika tidak ada catatan yang cocok.

Hal yang Berguna untuk Diketahui

Adalah baik untuk memahami bahwa meskipun gabungan subquery sangat berguna dan dapat mengoptimalkan alur kerja Anda, gunakan dengan hati-hati.

Misalnya, hindari penggunaan gabungan subquery dengan kumpulan data yang besar. Ini karena mereka dapat mengembalikan catatan ekstensif yang dapat memengaruhi kinerja database.

Pertimbangkan untuk menggunakan alat penganalisis kueri sebelum menjalankan gabungan subkueri apa pun.

Kesimpulan

Tutorial ini mengeksplorasi dasar-dasar bekerja dengan subqueries dan gabungan subquery di SQL. Di akhir tutorial ini, Anda sekarang memahami cara bekerja dengan subquery joins, mengapa Anda mungkin perlu menggunakannya, dan contoh praktis bagaimana mereka dapat membantu Anda dalam alur kerja Anda.