ALJABAR RELATIONAL, DISTINCT DAN JOIN

Minggu, Desember 20, 2015 0 Comments Category : , , , , , , , , ,

ALJABAR RELATIONAL

UNION (PENGGABUNGAN)


Pada prinsipnya bertujuan untuk menggabungkan dua query atau lebih menjadi satu kesatuan query.
Syarat :
Kedua query atau sub query yang akan digabung harus mempunyai domain kolom yang sama.

QUERY
SELECT field-1,…, field-n, aggregate_function
FROM tabel
[WHERE] [kriteria]
[GROUP BY] [field-1,…,field-n]
UNION
SELECT field-1,…, field-n, aggregate_function
FROM tabel
[WHERE] [kriteria]
[GROUP BY] [field-1,…,field-n]


CONTOH
QUERY 1
Tampilkan kode pelanggan, berapa kali pembelian dan total pembelian per-pelanggan. Kode_pelanggan yang ditampilkan adalah ‘J-0001’

SELECT Kode_Pelanggan,
COUNT (JUMLAH_PEMBELIAN) as CACAH_BELI
SUM (JUMLAH_PEMBELIAN) as TOTAL_BELI
FROM pasok
WHERE Kode_supplier = ‘J-0001’
GROUP BY Kode_Pelanggan

QUERY 2
Tampilkan kode pelanggan, berapa kali pembelian dan total pembelian per pelanggan. Kode_pelanggan yang ditampilkan adalah ‘J-0002’

SELECT Kode_Pelanggan,
COUNT(JUMLAH_PEMBELIAN) as CACAH_BELI
SUM (JUMLAH_PEMBELIAN) as TOTAL_BELI
FROM pasok
WHERE Kode_supplier = ‘J-0002’
GROUP BY Kode_Pelanggan

UNION QUERY 1 & QUERY 2
Tampilkan kode pelanggan, berapa kali pembelian dan total pembelian per pelanggan. Kode_pelanggan yang ditampilkan adalah ‘J-0001 dan J-0002’.

SELECT Kode_Pelanggan,
COUNT (JUMLAH_PEMBELIAN) as CACAH_BELI
SUM (JUMLAH_PEMBELIAN) as TOTAL_BELI
FROM pasok
WHERE Kode_supplier = ‘J-0001’
GROUP BY Kode_Pelanggan
UNION
SELECT Kode_Pelanggan,
COUNT (JUMLAH_PEMBELIAN) as CACAH_BELI
SUM (JUMLAH_PEMBELIAN) as TOTAL_BELI
FROM pasok
WHERE Kode_supplier = ‘J-0002’
GROUP BY Kode_Pelanggan

Contoh Sederhana Union dalam bentuk tabel :                                
SELECT * FROM MHS
UNION
SELECT * FROM MHS2;
Union akan menggabungkan kedua tabel menjadi satu, jika ada kesamaan record dari kedua tabel maka hanya akan ditampilkan satu saja.

INTERSECTION (PERPOTONGAN)


Syarat :
Kedua query atau sub query yang akan digabung harus mempunyai domain kolom yang sama.

QUERY
SELECT field-1,…, field-n, aggregate_function
FROM tabel
[WHERE] [kriteria]
[GROUP BY] [field-1,…,field-n]
INTERSECT
SELECT field-1,…, field-n, aggregate_function
FROM tabel
[WHERE] [kriteria]
[GROUP BY] [field-1,…,field-n]

CONTOH:
QUERY 1
Tampilkan kode pelanggan, berapa kali pembelian dan total pembelian per-pelanggan. Kode_pelanggan yang ditampilkan adalah ‘J-0001’
SELECT Kode_Pelanggan,
COUNT (JUMLAH_PEMBELIAN) as CACAH_BELI
SUM (JUMLAH_PEMBELIAN) as TOTAL_BELI
FROM pasok
WHERE Kode_supplier = ‘J-0001’
GROUP BY Kode_Pelanggan

QUERY 2
Tampilkan kode pelanggan, berapa kali pembelian dan total pembelian per pelanggan. Kode_pelanggan yang ditampilkan adalah ‘J-0002’
SELECT Kode_Pelanggan,
COUNT(JUMLAH_PEMBELIAN) as CACAH_BELI
SUM (JUMLAH_PEMBELIAN) as TOTAL_BELI
FROM pasok
WHERE Kode_supplier = ‘J-0002’
GROUP BY Kode_Pelanggan


INTERSECTION QUERY 1 & QUERY 2
Tampilkan kode pelanggan, berapa kali pembelian dan total pembelian per pelanggan. Kode_pelanggan yang ditampilkan adalah ‘J-0001 dan J-0002’
SELECT Kode_Pelanggan,
COUNT (JUMLAH_PEMBELIAN) as CACAH_BELI
SUM (JUMLAH_PEMBELIAN) as TOTAL_BELI
FROM pasok
WHERE Kode_supplier = ‘J-0001’
GROUP BY Kode_Pelanggan
INTERSECT
SELECT Kode_Pelanggan,
COUNT (JUMLAH_PEMBELIAN) as CACAH_BELI
SUM (JUMLAH_PEMBELIAN) as TOTAL_BELI
FROM pasok
WHERE Kode_supplier = ‘J-0002’
GROUP BY Kode_Pelanggan

Contoh Sederhana intersection dalam bentuk tabel :                                
SELECT * FROM MHS
INTERSECT
SELECT * FROM MHS2;
Intersection akan menggabungkan kedua tabel menjadi satu,  record yang ditampilkan hanya record yang sama dari kedua tabel. Yang menjadi acuan adalah tabel pertama.

SET DIFFERENCE


Set Difference digunakan untuk mengambil data yang berbeda dalam dua tabel yang sama.
Syarat :
Kedua query atau sub query yang akan digabung harus mempunyai domain kolom yang sama.

Contoh Sederhana set difference dalam bentuk tabel :                                
SELECT * FROM MHS
MINUS
SELECT * FROM MHS2;
Set Difference akan menggabungkan kedua tabel menjadi satu,  record yang ditampilkan hanya record yang berbeda dari  tabel pertama dengan tabel kedua.

CROSS JOIN


Contoh Sederhana cross join dalam bentuk tabel :                                
SELECT *
FROM MHS CROSS JOIN NILAI;
Cross join akan menggabungkan kedua tabel. Masing masing record dari tabel pertama akan di gabungkan dengan semua record di tabel kedua.

NATURAL JOIN


Contoh Sederhana natural join dalam bentuk tabel :                                
SELECT *
FROM MHS NATURAL JOIN NILAI;
Natural join akan menggabungkan kedua tabel. Record di tabel pertama akan digabungkan dengan record di tabel kedua jika memiliki Key yang sama.






PROYEKSI / DISTINCT
Pada dasarnya distinct digunakan untuk menghilangkan nilai ganda. Jadi nilai yang sama dan diulang-ulang akan dijadikan nilai tunggal atau satu nilai saja.

SELECT DISTINCT field-1,…, field-n, aggregate_function
FROM tabel
WHERE [kriteria]
GROUP BY [field-1,…,field-n]

Tampilkan jumlah pembelian berdasarkan kode barang dan tanggal pembelian
Perhatikan !
Sebelum ada perintah distinct :
SELECT Kode_Barang, Tanggal_Pembelian, Jumlah Pembelian
FROM Pembelian
GROUP BY Kode_Barang, Tanggal_Pembelian

Setelah ada perintah distinct :
SELECT DISTINCT Kode_Barang, Tanggal_Pembelian, Jumlah Pembelian
FROM Pembelian
GROUP BY Kode_Barang, Tanggal_Pembelian


JOIN
Pada prinsipnya Join/Inner join/Normal Join/Equal Join bertujuan untuk mencari kesamaan data antara tabel yang satu dengan tabel yang lain.
Data yang sama tersebut akan ditampilkan setelah terjadi operasi join ini.

SELECT tabel-1.field-1,…, tabel-1.field-n,
tabel-2.field-1,…, tabel-2.field-n,
tabel-n.field-1,…, tabel-n.field-n,
FROM tabel.1,…,tabel-2,…,tabel-n
WHERE tabel-1.field_PK = tabel-2.field_PK AND
tabel.2.field_PK = tabel-n.field_PK


Tampilkan nama barang, tanggal berapa terjadi pembelian dan berapa jumlah pembelian barang


SELECT barang.NAMA_BARANG,pembelian.TGL_PEMBELIAN, pembelian.JUMLAH_PEMBELIAN
FROM barang, pembelian
WHERE barang.KODE_BARANG=pembelian.KODE_BARANG
Menggunakan sintak join :
SELECT barang.NAMA_BARANG,pembelian.TGL_PEMBELIAN, pembelian.JUMLAH_PEMBELIAN
FROM barang JOIN pembelian
ON barang.KODE_BARANG=pembelian.KODE_BARANG



LATIHAN!!!
UNION
  1. Tampilkan NIM, berapa kali nilai yang muncul dan total nilai per mahasiswa. NIM yang ditampilkan adalah ‘201381002’
  2. Tampilkan NIM, berapa kali nilai yang muncul dan total nilai per mahasiswa. NIM yang ditampilkan adalah ‘201381005’
  3. Dengan UNION Tampilkan NIM, berapa kali nilai yang muncul dan total nilai per mahasiswa. NIM yang ditampilkan adalah ‘201381002’ dan ‘201381005’
Output :

DISTINCT
Tampilkan nilai berdasarkan kode mata kuliah, dengan menghilangkan data yang bernilai ganda

JOIN
  1. Dengan menggunakan sintax join tampilkan nama matakuliah, SKS, dan nilai
  1. Tampilkan nama mahasiswa, kota dan nilai
  1. Tampilkan nama mata kuliah, nama mahasiswa,dan nilai

RELATED POSTS

0 komentar

Fell free to comments.