Pages

Friday, August 25, 2017

SQLite - JOINS

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