SQL Joins digunaankan untuk menggabungkan data dari beberapa tabel menjadi satu di dalam database
Ada 3 jenis penggabungan SQL antaralain
- CROSS JOIN
- INNER JOIN
- OUTER JOIN
Sebelum melanjutkan pembahasan mari kita lihat dua tabel. kita asumsikan isi tabel dalam laporan data gaji karyawan karyawann dalam perusahaan yang berbeda-beda tiap karyawan dalam departemen masing-masing.
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Lihat Query membuat tabel berikut
CREATE TABLE DEPARTMENT( ID INT PRIMARY KEY NOT NULL, DEPT CHAR(50) NOT NULL, EMP_ID INT NOT NULL );
dibawah ini adalah Query mengisi tabel departemen
INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (1, 'IT Billing', 1 ); INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (2, 'Engineering', 2 ); INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (3, 'Finance', 7 );
Ini adalah hasil dari Query insert diatas
ID DEPT EMP_ID ---------- ---------- ---------- 1 IT Billing 1 2 Engineering 2 3 Finance 7
CROSS JOIN
CROSS JOIN cocok setiap baris dari tabel pertama dengan setiap baris tabel kedua, jika memiliki tabel masukan X dan Y maka masing-masing tabel yang di hasilkan akan memiliki nilai X*Y, karena CROSS bergabung dan memiliki potensi untuk menghasilkan tabel-tabel yang sangat komplek.
Lihat sintak CROSS JOIN di bawah ini agar lebih jelas
SELECT ... FROM table1 CROSS JOIN table2 ...
Berdasarkan tabel diatas, anda dapat menulis CROSS sebagai berikut
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY CROSS JOIN DEPARTMENT;
Sintak diatas akan menghasilkan seperti tabel dibawah ini
EMP_ID NAME DEPT ---------- ---------- ---------- 1 Paul IT Billing 2 Paul Engineering 7 Paul Finance 1 Allen IT Billing 2 Allen Engineering 7 Allen Finance 1 Teddy IT Billing 2 Teddy Engineering 7 Teddy Finance 1 Mark IT Billing 2 Mark Engineering 7 Mark Finance 1 David IT Billing 2 David Engineering 7 David Finance 1 Kim IT Billing 2 Kim Engineering 7 Kim Finance 1 James IT Billing 2 James Engineering 7 James Finance
INNER JOIN
INNER JOIN menciptakan tabel baru dari hasil menggabungkan nilai kolom dua tabel (tabel1 dan tabel2). Queri membandingkan setiap baris tabel1 dengan setiap baris tabel2 untuk menemukan semua pasangan baris.
INNER JOIN yang paling umum dan standar anda dapat menggunakan katakunci dalam opsional.
Lihat syntax di bawah ini
SELECT ... FROM table1 [INNER] JOIN table2 ON conditional_expression ...
Untuk menghindari redunansi dan menyimpan ungkapan yang lebih pendek, penggabungan dalam kondisi dapat dinyatakan dengan expresi, ungkapan ini menentukan daftar satu atau lebih.
SELECT ... FROM table1 JOIN table2 USING ( column1 ,... ) ...
Penggabungan secara alami mirip dengan penggabungan JOIN ...USING. ini dilakukan secara otomatis experimen kesetaraan antara nilai-nilai setiap kolom yang ada dalam kedua tabel.
SELECT ... FROM table1 NATURAL JOIN table2...
Berdasarkan tabel diatas anda dapet menulis INNER JOIN, lihat Syntak dibawah ini
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
Hasil dari syntak diatas akan seperti dibawah ini
EMP_ID NAME DEPT ---------- ---------- ---------- 1 Paul IT Billing 2 Allen Engineering 7 James Finance
OUTER JOIN
OUTER JOIN memiliki kondisi yang identik dengan INNER JOIN diekspresikan mengunakan kata kunci ON, USING dan NATURE. Tabel hasil awal dihitung dengan cara yang sama, setelah penggabungan pertama dihitung, INNER JOIN dan OUTER JOIN. isi tabel akan dihitung setelah penggabungan tersebut dan akan mengambil hasil dari kedua tabel dengan NULL.
SELECT ... FROM table1 LEFT OUTER JOIN table2 ON conditional_expression ...
Untuk menghindari redunansi dan menyimpan ungkapan yang lebih pendek, lkondisi diluar bergabung dan dapat dinyatakan dengan expresi, ungkapan ini menentukan satu atau lebih kolom
SELECT ... FROM table1 LEFT OUTER JOIN table2 USING ( column1 ,... ) ...
Untuk menampilkan data di atas dengan OUTER JOIN syntaknya sebagai berikut
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
Dari syntak diatas maka akan menghasilkan seperti di bawah ini
EMP_ID NAME DEPT
---------- ---------- ----------
1 Paul IT Billing
2 Allen Engineering
Teddy
Mark
David
Kim
7 James Finance
Jika anda masih belum paham, silahkan menulis dikomentar
No comments:
Post a Comment