Brace Your Self





October 10, 2013

July 16, 2013

June 29, 2013

Pemanfaatan Subquery Untuk Menyelesaikan Query


Subquery merupakan “query didalam query” atau perintah select yang berada didalam perintah select lainnya. Subquery terdiri dari dua perintah select. Perintah select pertama disebut Outer Query atau Query induk sedangkan query yang berada pada klausa where disebut inner query. Inner query akan dikerjakan terlebih dahulu dan hasilnya akan digunakan sebagai pembnding pada pencarian data di klausa where outer query. Subquery dapat digunakan untuk menghasilkan nilai-nilai bagi outer query pada saat kriteria pencarian yang dibutuhkan tidak diketahui.


Bentuk umum subquery:

SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table) ;


Jenis Subquery

• Single-row subquery
Merupakan subquery yang hanya menghasilkan satu baris dan satu kolom data atau data tanggal. Pada subquery juga bisa menggunakan group function seperti AVG, MAX dan MIN.

SELECT last_name, job_id, salary ST_CLERK
FROM employees
WHERE job_id = (SELECT job_id FROM employees
WHERE employee_id = 141)
AND salary < 2600 (SELECT salary FROM employees WHERE employee_id = 143) ; SELECT last_name, salary, deparment_id FROM employees WHERE deparment_id < (Select department_id FROM employees WHERE last_name = ‘Landry’) OR salary > (SELECT salary
FROM employees
WHERE last_name = ‘De Haan’);
ORDER by salary;



Penggunaan fungsi group dalam subquery
Fungsi group seperti AVG, MAX, MIN

SELECT last_name, job_id, salary
FROM employees
WHERE salary = (SELECT MIN (salary)
FROM employees);



SELECT last_name, job_id, salary
FROM employees
WHERE salary < (SELECT AVG (salary) FROM employees); Pernyataan having dengan subquery SELECT department_id, MIN (salary) FROM employees GROUP BY department_id HAVING MIN(salary) >
(SELECT MIN (salary)
FROM employees
WHERE department_id =50);



SELECT department_id, AVG (salary)
FROM employees
GROUP BY department_id
HAVING AVG(salary) < 2500 (SELECT AVG (salary) FROM employees WHERE last_name = ‘Abel’); • Multy-row subquery Menghasilkan lebih dari satu row. Tanda pembanding yang digunakan dalam multi row subquery adalah tanda pembanding jamak yaitu IN, ANY dan ALL. SELECT employee_id, last_name FROM employees WHERE salary IN (SELECT MIN (salary) FROM employees GROUP BY department_id); SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary < ANY 9000,6000,4800,4200 (SELECT salary FROM employees WHERE job_id = ‘IT_PROG’) AND job_id <> ‘IT_PROG’;



SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary < ALL 9000,6000,4800,4200 (SELECT salary FROM employees WHERE job_id = ‘IT_PROG’) AND job_id <> ‘IT_PROG’;



Nilai NULL dalam subquery

SELECT emp.last_name
FROM employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_id
FROM employees mgr);




SELECT emp.last_name
FROM employees emp
WHERE emp.employee_id IN
(SELECT mgr.manager_id
FROM employees mgr);



Dengan menggunakan klausa WHERE


SELECT emp.last_name
FROM employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_id
FROM employees mgr
WHERE manager_id IS NOT NULL);




Download Here
Lanjut membaca“Pemanfaatan Subquery Untuk Menyelesaikan Query” »»

Penggunaan JOIN pada Oracle


Menampilkan Data Dari Banyak Table Menggunakan JOIN

Join merupakan sebuah operasi yang digunakan untuk mendapatkan data gabungan dari dua tabel atau lebih. Operasi ini digunakan dalam perintah SELECT dan biasanya dipakai untuk memperoleh detail data dari tabel-tabel yang saling terkait (memiliki relasi).


Bentuk umum JOIN:

SELECT table1.column, table2.column
From table1
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name) ] |
[JOIN table2
ON (table1.column_name = table2.column_name) ] |
[LEFT | RIGHT | FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name) ] |
[ CROSS JOIN table2 ] ;


Operasi JOIN pada Oracle, yaitu :

• Berdasarkan data yang dihasilkan:

1.Inner Join
Join yang menghasilkan data yang bersesuaian atau data yang memenuhi kondisi join saja. Data yang tidak sesuai / tidak punya pasangan di tabel lawannya tidak akan dimunculkan.
Operator JOIN yang termasuk pada kategori ini adalah Natural Join.


  • Natural Join
Natural Join bisa dilakukan antar dua tabel dengan ketentuan:
1. Ada kolom yang sama pada kedua tabel
2. Kolom yang namanya sama hanya ada satu kolom
3. Data yang muncul adalah data yang saling bersesuaian di antara dua tabel atau inner join.


SELECT department_name, street_address, location_id, city
FROM departments NATURAL JOIN locations
WHERE city <> ‘Seatle’ ;


Dengan adanya kondisi tersebut maka otomatis join dilakukan melalui kolom yang namanya sama.
 


2 Outer Join
Join yang hasilnya merupakan gabungan data yang bersesuaian atau data yang memenuhi kondisi join dan data yang tidak punya pasangan di tabel lawannya. Selanjutnya Outer Join dibagi lagi menjadi Left Outer Join, Right Outer Join, dan Full Outer Join.

- Left Outer Join
Apabila ingin menampilkan semua data di tabel kiri yang memiliki atau tidak memiliki pasangan. Penentuan Left Outer Joinmaka tanda (+) diletakkan disisi kanan tanda pembanding.
 

SELECT e.employee_id, e.last_name, e.job_id, e.department_id, d.department_name
FROM employees e LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);




- Right Outer Join
Apabila ingin menampilkan semua data di tabel kanan yang memiliki atau tidak memiliki pasangan. Penentuan Right Outer Joinmaka tanda (+) diletakkan disisi kiri tanda pembanding.
 

SELECT e.employee_id, e.last_name, e.job_id, e.department_id, d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);




- Full Outer Join
Merupakan gabungan hasil left dan right outer join. Untuk menggabungkan menggunakan operator UNION.

SELECT e.employee_id, e.last_name, e.job_id, e.department_id, d.department_name
FROM employees e FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);


3 Self Join
Merupakan join antar kolom dalam satu tabel. Join dengan satu tabel yang sama sebenarnya tidak bisa dilakukan, self join dilakukan dengan menggunakan tabel alias. Jadi satu tabel dibuat menjadi dua tabel alias sehingga seolah-olah join dilakukan dari dua tabel yang berbeda.
 

SELECT e.employee_id AS “KODE KARYAWAN”, e.last_name AS “NAMA KARYAWAN”,
m.employee_id AS “KODE MANAGER”, m.last_name AS “NAMA MANAGER”, e.job_id AS “JABATAN”
FROM employees e Join employees m
ON (e.manager_id = m.employee_id) ;


• Berdasarkan tanda pembanding pada klausa where:


1 Equi Join
Join antara dua tabel yang kondisi joinnya menggunakan tanda sama dengan (=).
 

SELECT d.department_name, l.street_address, l.location_id, l.city
FROM departments d.locations l
WHERE d.location_id = l.location_id and city <> ‘Seatle’ ;


2 Non-Equi Join
Join antara dua tabel yang kondisi joinnya menggunakan selain tanda sama dengan seperti : <, >, beetween, dsb.
 

SELECT DISTINC(j.job_title), e.salary, e.job_id, e.first_name
FROM employees e JOIN jobs j
ON e.salary BETWEEN j.min_salary AND j.max_salary;



  •   USING

USING merupakan pengembangan dari natural join, dengan ketentuan sebagai berikut:
1. Jika ada lebih dari satu kolom yang namanya sama pada tabel yang akan di di-join.
2. Klausa using digunakan untuk menentukan nama kolom yang akan digunakan sebagai kondisi join.
3. Pada nama kolom yang digunakan pada klausa using tidak boleh diawali dengan nama tabel.

 

SELECT e.employee_id, e.last_name, d.location_id, department_id
FROM employees e join departments d
USING (department_id) WHERE department_id <=30; 




Klausa ON 
Memungkinkan dilakukan join pada dua tabel walaupun pada kedua tabel tersebut tidak ada kolom yang namanya sama untuk dijadikan sebagai kondisi join tetapi data pada kolom tersebut bersesuaian sehingga memungkinkan untuk dilakukan join.

SELECT e.employee_id, e.department_id, d.department_id, d.manager_id, d.department_name FROM employees e JOIN d epartments d ON (e.employee_id =d.department_id); Penambahan operator AND pada join SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id) AND e.manager_id = 149; 

Join Tiga Table Menggunakan Klause ON 

SELECT employee_id AS “KODE PEGAWAI”, department_name AS “NAMA DIVISI”, street_address AS “ALAMAT”, city AS “KOTA” FROM employees e JOIN departments d ON d.deparment_id = e.department_id JOIN locations l ON d.location_id = l.location_id;

Cross Join Menghasilkan kombinasi semua baris yang terdapat dalam tabel-tabel yang digabungkan, baik itu yang tidak berpasangan maupun yang berpasangan. Bentuk paling sederhana dari penggabungan 2 buah tabel akan membentuk perkalian Cartesian. 

 SELECT last_name, department_name FROM employees CROSS JOIN deparments; 


Download Here Lanjut membaca“Penggunaan JOIN pada Oracle” »»

Thanks for visit my blog
© 2008 - 2013 keroco.blogspot.com


free hit counter
   

Entertainment    
eXTReMe Tracker