22 January 2008

Join di SQL

kakashifull
Sebuah cara memahami dasar join pada SQL.
Buat database dengan relasi berikut: Tambahkan data untuk setiap tabel, contoh datanya:

t_Siswa:
S8564 Jaja Surabaya Bandung 1999-08-16 00:00:00
S9857 Budi Surabaya Sidoarjo 1998-12-15 00:00:00

t_Gaji:
IA 500000.0000
IB 600000.0000
IIA 700000.0000
IIB 800000.0000
IIIA 900000.0000
IIIB 1000000.0000

t_Guru:
G1523 Tuti Surabaya IIA
G5623 Siti Malang IIIB

t_Kelas:
1A 1 G1523
1B 1 NULL
2A 2 NULL
2B 2 G5623
3 3 NULL
4 4 NULL
5 5 NULL
6 6 NULL

t_IsiKelas:
1 2007/2008 1A S8564
2 2007/2008 2B S9857

Setelah itu coba perintah join:

use db_Sekolah

select * from t_Siswa
select * from t_Gaji
select * from t_Guru
select * from t_Kelas
select * from t_IsiKelas

--melihat gaji semua guru
select A.Nama,B.Gaji
from t_Guru as A left join t_Gaji as B on A.Golongan=B.Golongan

--menampilkan nama guru dan jenjang kelas yang diajar
select A.No_Induk,A.Nama,B.Jenjang
from t_Guru as A left join t_Kelas as B on A.No_Induk=B.Guru

--menampilkan daftar kelas dan nama guru
select t_Kelas.Kode_Kelas,t_Kelas.Jenjang,t_Guru.Nama
from t_Kelas left join t_Guru on t_Kelas.Guru=t_Guru.No_Induk

--melihat daftar kelas siswa tahun ajaran 2007/2008
select B.Tahun_Ajaran,A.No_Induk,A.Nama,B.Kode_Kelas
from t_Siswa as A left join t_IsiKelas as B on A.No_Induk=B.Siswa where B.Tahun_Ajaran='2007/2008'

--menampilkan gaji dosen dari setiap kelas
select t_Kelas.Kode_Kelas,t_Kelas.Jenjang,t_Gaji.Gaji
from t_Kelas left join t_Guru on t_Kelas.Guru=t_Guru.No_Induk left join t_Gaji on t_Guru.Golongan=t_Gaji.Golongan

--melihat alamat siswa dan alamat guru pengajarnya
select A.Alamat as Alamat_Siswa, D.Alamat as Alamat_Pengajar
from t_Siswa as A left join t_IsiKelas as B on A.No_Induk=B.Siswa left join t_Kelas as C on B.Kode_Kelas=C.Kode_Kelas left join t_Guru as D on C.Guru=D.No_Induk

Coba jenis-jenis join dengan perintah yang sama, tentu dengan hasil yang berbeda:
- Inner join, Menampilkan rekord yang bersesuaian dari kedua tabel. Intersection kalau dalam istilah himpunan.
- Outer join, Menampilkan rekord yang bersesuaian dan rekord yang belum ditampilkan dari kedua tabel. Union dalam istilah himpunan.
- Left join, menampilkan semua record dari tabel pertama dan menampilkan isi tabel kedua yang bersesuaian dengan kondisi tabel pertama.
- Right join, menampilkan semua rekord tabel kedua dan menampilkan isi tabel pertama yang bersesuaian dengan tabel kedua.

8 °C:

Anonymous said...

g jelas, kasih liat result-nya donk,masa teori doank...

om4gus said...

lagi males dikasih gambar. mas kan lebih pinter, kenapa tidak membuat querynya sendiri?

Anonymous said...

outer join sama inner joinnya kasih coNtoh dong PAk!!!!

om4gus said...

@Anonim
Disitu kan sudah ada contoh-contoh join. Coba saja ganti dengan perintah yang lain.
Misalkan:
select t_Kelas.Kode_Kelas,t_Kelas.Jenjang,t_Guru.Nama
from t_Kelas left outer join t_Guru on t_Kelas.Guru=t_Guru.No_Induk

Anonymous said...

alah mboh mas,,,g mudeng

om4gus said...

dimudeng2in tho mas...

Anonymous said...

nyontek nih, bukan karya sendiri

om4gus said...

@anonim
:-) Saya buat ini untuk bahan ngajar di kampus. Agan ini perhatian banget sih

Post a Comment