Operator Join



A.  Operator JOIN

Operator join adalah  mengambil dua relasi dan mengembalikan nilai yang berasal dari
relasi tersebut, Operasi ini biasanya menjadi expresi  subquery  dari klausa FROM,.
Setiap variasi dari operasi   dalam SQL terdiri dari tipe join dan kondisi join. Kondisi
join mendifinisikan  record dari dua relasi yang sama, dan atribut apa yang muncul
dari hasil join. Tipe join mendefinisikan bagaimana record dari setiap relasi yang
tidak sama dengan record lain dalam relasi lainnya.

INNER JOIN

Merupakan operasi paling umum digunakan dalam aplikasi dan dapat dianggap
sebagai  tipe join yang standart. Inner join  menghasilkan table  baru dengan
menggabungkan nilai-nilai kolom dari dua tabel (A dan B) didasarkan pada predikat
join

SELECT *
FROM employees INNER JOIN departments
ON employees.Department_ID =
departments.Department_ID;

SELECT *
FROM   employees, departments
WHERE  employees.Department_ID =
departments.Department_ID;

Query di atas merupakan notasi join secara implisit yang  penggabungankan dua table
atau lebih.

EQUI-JOIN
Adalah join yang berbasis perbandingan equal.

 SELECT *
FROM   employees,job_history
          where employees.employee_id = job_history.employee_id;

NATURAL JOIN
Merupakan  operasi  equijoin dengan memperlakukan nama-nama kolom yang sama
sebagai kolom penghubung antara table.

SELECT *
FROM   employees NATURAL JOIN departments;

CROSS JOIN
Merupakan perkalian kartesian dalam pemakaian klausa FROM.

SELECT *
FROM   employees CROSS JOIN departments;
SELECT *
FROM   employees, departments;

LEFT OUTER JOIN
Merupakan penggabungan table  dimana hasil penggabungan table A dan B  adalah
hasil inner join kedua table tersebut ditambah dengan  record  dari  tabel yang kiri
(dalam hal ini adalah table A).

CREATE TABLE employee (
    LastName varchar(25),
    DepartmentID int
);
CREATE TABLE department (
    DepartmentID int UNIQUE,
    DepartmentName varchar(25)
);
ALTER TABLE employee
ADD CONSTRAINT fk_employee_dept
FOREIGN KEY (DepartmentID)
REFERENCES department(DepartmentID);

INSERT INTO department VALUES (31, 'Sales');
INSERT INTO department VALUES (33, 'Engineering');
INSERT INTO department VALUES (34, 'Clerical');
INSERT INTO department VALUES (35, 'Marketing');
INSERT INTO employee VALUES ('Xrobot', 31);
INSERT INTO employee VALUES ('Mugn', 33);
INSERT INTO employee VALUES ('Lesto', 33);
INSERT INTO employee VALUES ('tollo', 34);
INSERT INTO employee VALUES ('nakula', 34);
INSERT INTO employee VALUES ('Kamtiez', NULL);

SELECT *
FROM   employee  LEFT OUTER JOIN department
          ON employee.DepartmentID = department.DepartmentID;

RIGHT OUTER JOIN
Merupakan kebalikan dari left outer join  dimana hasil penggabungan table A dan B
selalu record tabel  yang kanan (dalam hal ini adalah table B).

SELECT *
FROM   employee RIGHT OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID;

FULL OUTER JOIN
Merupakan  kombinasi  dari left outer join  dan right outher join  dimana hasil
penggabungan table A dan B  jika ada NULL selalu di tampilkan baik kiri maupun
kanan pada table.

SELECT *
FROM   employee
       FULL OUTER JOIN department
          ON employee.DepartmentID = department.DepartmentID;

SELF-JOIN
Merupakan penggabungan atau join sebuah table dengan table itu sendiri

SELECT F.Employee_ID, F.Last_Name, S.Employee_ID, S.Last_Name,
F.JOB_ID
FROM Employees F, Employees S
WHERE F.JOB_ID= S.JOB_ID
AND F.Employee_ID < S.Employee_ID
ORDER BY F.Employee_ID, S.Employee_ID;
No comments

No comments :

Post a Comment