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;
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment