work hard & thinking!

SQL Dasar: Queri dari beberapa Tabel

Kadang-kadang sulit untuk mengetahui apa sintaks SQL yang digunakan ketika menggabungkan data yang meliputi beberapa tabel. Di bawah ini akan dibahas beberapa metode yang sering digunakan untuk mengkonsolidasikan query pada beberapa tabel ke dalam pernyataan tunggal.

SELECT

Yang sederhana adalah pernyataan SELECT merupakan cara paling dasar untuk query beberapa tabel. Anda dapat memanggil lebih dari satu tabel dalam klausa FROM untuk menggabungkan hasil dari beberapa tabel. Di bawah ini merupakan contoh tentang cara kerjanya:

SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.column1 = table2.column1;

Dalam contoh ini, digunakan notasi titik (table1.column1) untuk menentukan kolom tabel itu berasal. Jika kolom tersebut hanya muncul di salah satu tabel yang dituju, Anda tidak perlu menyertakan nama yang memenuhi syarat, tetapi mungkin berguna untuk melakukannya untuk kemudahan dibaca.

Tabel-tabel dalam clausa FROM digunakan pemisah koma. Anda dapat menyertakan sebanyak tabel yang diinginkan, kendati demikian beberapa database memberikan batasan agar secara efektif menanggulanginya sebelum digahungkan dengan statemen JOIN seperti yang dibahas di bawah.

sintak ini secara sederhana merupakan penyederhanaan dari INNER JOIN. Beberapa database memperlakukan sama seperti halnya statemen JOIN. Klausa WHERE memberitahukan database bagian field mana saja yang berhubungan, dan mengembalikan hasilnya jika tabel ada yang dikombinasikan kedalam satu tabel berdasarkan pada kondisi yang disebutkan. Data tidak akan ditampilkan jika kondisi yang dikomparasikan tidak memiliki hasil nilai yang sama. Pada contoh di atas, table1.column1 dan table2.column1 digunakan untuk mengkombinasikan dua tabel, table2.column2 mengembalikan hasil.

Anda bisa memperluas fungsionalitas ini ke lebih dari dua tabel menggunakan kata kunci AND dalam klausa WHERE. Anda juga bisa menggunakan kombinasi tabel tersebut untuk membatasi hasil tanpa benar-benar mengembalikan kolom dari setiap tabel. Dalam contoh di bawah ini, table3 dicocokkan dengan table1, tetapi saya tidak mengembalikan apa pun dari table3 untuk ditampilkan. Saya hanya memeriksa apakah kolom yang relevan dari table1 ada di table3. Perlu diperhatikan bahwa table3 harus disebutkan di klausa FROM untuk contoh ini.

SELECT table1.column1, table2.column2 FROM table1, table2, table3 WHERE table1.column1 = table2.column1 AND table1.column1 = table3.column1;

Namun, harap diingat bahwa metode ini secara efektif merupakan JOIN implisit. Database Anda mungkin menangani ini secara berbeda, tergantung pada mesin optimasi yang digunakan. Selain itu, jika Anda tidak mendefinisikan korelasi dengan klausa WHERE, Anda bisa mendapatkan hasil yang tidak diinginkan, seperti mengembalikan nilai di kolom yang terkait dengan setiap kemungkinan hasil dari sisa query, seperti pada CROSS JOIN.

Jika Anda nyaman dengan cara database Anda menangani pernyataan seperti ini, dan Anda hanya menggabungkan dua atau beberapa tabel, pernyataan SELECT sederhana akan memenuhi kebutuhan Anda.

JOIN

JOIN bekerja dengan cara yang sama seperti pernyataan SELECT di atas—yaitu mengembalikan kumpulan hasil dengan kolom dari berbagai tabel. Keuntungan menggunakan JOIN eksplisit dibandingkan yang implisit adalah kontrol yang lebih besar atas hasil, dan kemungkinan peningkatan kinerja saat banyak tabel terlibat.

Ada beberapa jenis JOINLEFT, RIGHT, dan FULL OUTER; INNER; serta CROSS. Jenis yang Anda gunakan ditentukan oleh hasil yang ingin Anda lihat. Misalnya, menggunakan LEFT OUTER JOIN akan mengembalikan semua baris relevan dari tabel pertama yang disebutkan, sementara baris dari tabel kedua mungkin dihilangkan jika tidak ada informasi yang sesuai dengan tabel pertama.

Ini berbeda dari INNER JOIN atau JOIN implisit. INNER JOIN hanya akan mengembalikan baris yang datanya ada di kedua tabel.

Gunakan pernyataan JOIN berikut untuk query SELECT pertama di atas:

SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.column1 = table2.column1;

Subqueries

Subqueries, atau pernyataan subselect, adalah cara untuk menggunakan kumpulan hasil sebagai sumber daya dalam query. Ini sering digunakan untuk membatasi atau memperhalus hasil, daripada menjalankan beberapa query atau memanipulasi data dalam aplikasi Anda. Dengan subquery, Anda dapat merujuk tabel untuk menentukan apakah data akan dimasukkan atau, dalam beberapa kasus, mengembalikan kolom yang merupakan hasil dari subselect.

Contoh berikut menggunakan dua tabel. Satu tabel sebenarnya berisi data yang ingin saya kembalikan, sementara tabel lainnya memberikan titik perbandingan untuk menentukan data mana yang sebenarnya menarik.

SELECT column1 FROM table1 WHERE EXISTS ( SELECT column1 FROM table2 WHERE table1.column1 = table2.column1 );

Satu faktor penting tentang subquery adalah kinerja. Kenyamanan datang dengan biaya, dan tergantung pada ukuran, jumlah, dan kompleksitas tabel serta pernyataan yang Anda gunakan, Anda mungkin ingin membiarkan aplikasi Anda menangani pemrosesan. Setiap query diproses secara terpisah sepenuhnya sebelum digunakan sebagai sumber daya untuk query utama Anda. Jika memungkinkan, penggunaan JOIN secara kreatif dapat memberikan informasi yang sama dengan waktu tunda yang lebih sedikit.


JOIN statement dan subqueries

Untuk penjelasan lebih rinci tentang JOIN dan konsep yang dapat digunakan, baca artikel “Basic and complex SQL joins made easy” dan “Master joins with these concepts.” Untuk informasi lebih lanjut tentang subqueries, baca “Use SQL subselects to consolidate queries.”


UNION
Statement UNION adalah cara lain untuk mengembalikan informasi dari beberapa tabel dengan satu query. Pernyataan UNION memungkinkan Anda melakukan query terhadap beberapa tabel dan mengembalikan hasilnya dalam satu set terintegrasi, seperti pada contoh berikut:

SELECT column1, column2, column3 FROM table1 UNION SELECT column1, column2, column3 FROM table2;

Ini akan mengembalikan kumpulan hasil dengan tiga kolom yang berisi data dari kedua query. Secara default, pernyataan UNION akan menghilangkan duplikat antara tabel kecuali jika kata kunci UNION ALL digunakan. UNION berguna ketika kolom yang dikembalikan dari berbagai tabel tidak memiliki kolom atau data yang dapat dibandingkan dan digabungkan, atau ketika mencegah menjalankan beberapa query dan menggabungkan hasilnya dalam kode aplikasi Anda.

Jika nama kolom Anda tidak cocok ketika Anda menggunakan pernyataan UNION, gunakan alias untuk memberikan header yang bermakna pada hasil Anda:

SELECT column1, column2 as Two, column3 as Three FROM table1 UNION SELECT column1, column4 as Two, column5 as Three FROM table2;

Seperti subquery, pernyataan UNION dapat membebani server database, tetapi untuk penggunaan sesekali, ini dapat menghemat banyak waktu.

Catatan:
Ketika dihadapkan pada query database, ada beberapa cara untuk melakukannya pada masalah yang sama. Hal ini umumnya lebih sering digunakan metode untuk melakukan konsolidasi query pada banyak tabel ke dalam sebuah statemen tunggal. Dimana beberapa dari pilihan ini akan berpengaruh pada performance, latihan-latihan akan sangat membantu anda mengetahui jika dihadapkan pada beberapa macam tipe query.

1 February 2019 | Tags: , ,
Bookmark and Share

One thought on “SQL Dasar: Queri dari beberapa Tabel”

Leave a Reply

Your email address will not be published. Required fields are marked *

Cari

Recent Comments

Categories

Tags

Partners