Anda di halaman 1dari 5

Soal RELASI 3 TABEL

Buat tabel mahasiswa, matakuliah dan krs dengan ketentuan. Tuliskan perintah SQL pada tabel krs :
a. Tampilkan no_krs, NIM, nama mahasiswa, kode matakuliah dan nama mata kuliah dari
tabel KRS, MAHASISWA dan MATAKULIAH.
SELECT KRS.NO_KRS,
MAHASISWA.NIM,
MAHASISWA.NAMA_MHS,
MATAKULIAH.KODE_MK,
MATAKULIAH.NAMA_MK
FROM KRS, MAHASISWA, MATAKULIAH
WHERE MAHASISWA.NIM=KRS.NIM AND
MATAKULIAH.KODE_MK=KRS.KODE_MK;

b. Tampilkan matakuliah apa saja yang diambil oleh Irfan Bachdim


SELECT MATAKULIAH.NAMA_MK FROM KRS, MAHASISWA, MATAKULIAH
WHERE MAHASISWA.NIM=KRS.NIM AND
MATAKULIAH.KODE_MK=KRS.KODE_MK AND
MAHASISWA.NAMA_MHS='IRFAN BACDIM';

FOREIGN KEY

FOREIGN KEY (<nama field>) REFERENCES <nama tabel referensi> (<nama


field pada tabel referensi>)

Contoh:

CREATE TABLE tb_linkbukukategori (id_buku CHAR(13) NOT NULL,


id_kategori INT NOT NULL,
PRIMARY KEY(id_buku, id_kategori),
FOREIGN KEY (id_buku) REFERENCES tb_buku(id_buku),
FOREIGN KEY (id_kategori) REFERENCES tb_kategori(id_kategori)
)TYPE = InnoDB;
INNER, CROSS, LEFT, RIGHT, dan FULL JOIN di SQL

misalnya saya mempunyai 2 tabel yg nantinya akan dihubungkan :

tbl_kota
id_kota nama_kota id_propinsi
101 surabaya 1
102 gresik 1
103 kebumen 2
104 semarang 2
105 jogjakarta 3
106 bogor 4
107 banten 5

tbl_propinsi
id_prop nama_prop
1 jawa timur
2 jawa tengah
4 jawa barat
7 jakarta
8 sumatera utara

Disini kita mendefinisikan bagaimana mencari data yg ada pada tabel tersebut yang bisa
dihubungkan antara tabel "tbl_kota" & tabel "tbl_propinsi". pada tabel tersebut yang bisa
di relasikan adalah field "id_propinsi" dari tbl_kota & field "id_prop" pada tbl_propinsi.
INNER JOIN

SELECT *
FROM tbl_kota INNER JOIN tbl_propinsi
ON tbl_kota.id_propinsi = tbl_propinsi.id_prop

hasilnya :
id_kota nama_kota id_propinsi id_prop nama_prop
101 surabaya 1 1 jawa timur
102 gresik 1 1 jawa timur
103 kebumen 2 2 jawa tengah
104 semarang 2 2 jawa tengah
106 bogor 4 4 jawa barat

CROSS JOIN

SELECT *
FROM tbl_kota CROSS JOIN tbl_propinsi
ON tbl_kota.id_propinsi = tbl_propinsi.id_prop

hasilnya :
id_kota nama_kota id_propinsi id_prop nama_prop
106 bogor 4 4 jawa barat
102 gresik 1 1 jawa timur
103 kebumen 2 2 jawa tengah
104 semarang 2 2 jawa tengah
101 surabaya 1 1 jawa timur
LEFT JOIN :

SELECT *
FROM tbl_kota LEFT JOIN tbl_propinsi
ON tbl_kota.id_propinsi = tbl_propinsi.id_prop

hasilnya :
id_kota nama_kota id_propinsi id_prop nama_prop
101 surabaya 1 1 jawa timur
102 gresik 1 1 jawa timur
103 kebumen 2 2 jawa tengah
104 semarang 2 2 jawa tengah
105 jogjakarta 3 Null Null
106 bogor 4 4 jawa barat
107 banten 5 Null Null

disini anda lihat bahwa data tbl_kota akan ditampilkan yg tidak berelasi tetap ditampilkan,
dgn pertimbangan data yg di tbl_propinsi tidak ada maka bernilai NULL.

RIGHT JOIN

SELECT *
FROM tbl_kota RIGHT JOIN tbl_propinsi
ON tbl_kota.id_propinsi = tbl_propinsi.id_prop

hasilnya :
id_kota nama_kota id_propinsi id_prop nama_prop
101 surabaya 1 1 jawa timur
102 gresik 1 1 jawa timur
103 kebumen 2 2 jawa tengah
104 semarang 2 2 jawa tengah
106 bogor 4 4 jawa barat
Null Null Null 7 jakarta
Null Null Null 8 sumatera utara

Hasil diatas kebalikan dari LEFT JOIN, bahwa data yg di tbl_kota tidak ada maka bernilai
NULL.

FULL JOIN

SELECT *
FROM tbl_kota FULL JOIN tbl_propinsi
ON tbl_kota.id_propinsi = tbl_propinsi.id_prop
ORDER BY tbl_kota.id_kota

hasilnya :
id_kota nama_kota id_propinsi id_prop nama_prop
101 surabaya 1 1 jawa timur
102 gresik 1 1 jawa timur
103 kebumen 2 2 jawa tengah
104 semarang 2 2 jawa tengah
106 bogor 4 4 jawa barat
105 jogjakarta 3 Null Null
107 banten 5 Null Null
Null Null Null 7 jakarta
Null Null Null 8 sumatera utara

Semua data yg bisa direlasikan maupun tidak akan keluar semuanya.

Anda mungkin juga menyukai