Download - Statemen SELECT
-
7/25/2019 Statemen SELECT
1/7
Statemen SELECT
memulai dengan cara yang sama seperti semua statemen yang Anda ketahui sejauh ini,
dengan menetapkan feld yang didapatkan kembali. Perbedaan besar disini adalah dua
dari feld yang ditentukan (Barang.Nama dan Barang.Harga) ada pada satu tabel,
sedangkan yang lainnya (Supplier.Nama) pada tabel lainnya.
Sekerang perhatikan klausa !"#. $idak seperti semua statemen S%&%'$ sebelumnya,statemen ini mempunyai dua tabel pada klausa !"#, yaitu Supplier dan Barang.
eduanya adalah nama dua tabel yang akan digabungkan dalam statemen S%&%'$.
$abeltabel digabung dengan benar dengan klausa *H%!% yang memerintahkan +B#S
untuk mencckkan deSup pada tabel Supplier dengan deSup pada tabel Barang.
Anda juga mencatat bah-a feld tersebut ditetapkan sebagai Supplier.deSup dan
Barang.deSup. +isini diperlukan nama feld yang terkualifkasi sepenuhnya, karena
jika Anda hanya menentukan deSup, +B#S tidak dapat memberi tahu feld deSup
mana yang akan Anda hubungi (Ada dua deSup, satu pada setiap tabel). Seperti
dapat Anda lihat pada utputnya, statemen S%&%'$ tunggal mengembalikan data dari
dua tabel yang berbeda.
Klausa WHERE#ungkin terlihat aneh jika menggunakan klausa *H%!% untuk mengatur hubungan jin,
tetapi sebenarnya, ada sebuah alasa yang sangat bagus untuk ini. ngat, jika tabel
tabel digabungkan dalam statemen S%&%'$, maka hubungan itu disusun nthe/y.
$idak ada sesuatu dalam defnisi tabel database yang dapat memerintahkan +B#S
bagaimana menggabungkan tabel. Anda harus melakukannya sendiri.
etika kita menggabungkan dua tabel, yang sebenarnya Anda lakukan adalah
memasangkan setiap recrd pada tabel pertama dengan setiap recrd pada tabel
kedua. lausa *H%!% (seperti semua klausa *H%!%) bertindak sebagai penyaring
untuk hanya memasukkan recrd yang memenuhi kndisi penyaringan yang telah
ditentukan 0 disini kndisi jin.
+an Pastikan semua jin Anda mempunyai klausa *H%!%, atau +B#S akan
mengembalikan lebih banyak data daripada yang Anda inginkan. Pastikan juga klausa
*H%!% Anda benar. ndisi penyaringan yang tidak benar akan menyebabkan +B#S
mengembalikan data yang tidak benar.Inner Join
1in yang Anda gunakan selama ini disebut %231"N 0 jin berdasarkan pengujian
persamaan tabel antara dua tabel. 1eni jin ini juga disebut NN%! 1"N.
Pada dasarnya, beberapa +B#S menggunakan sintaks yang sedikit berbeda karena jin
tersebut menetapkan tipe jin yang jelas berbeda. Statemen S%&%'$ berikut ini
mengembalikan data yang tepat sama seperti cnth terdahulu.SELECT Supplier.Nama, Barang.Nama, Barang.Harga FROM Supplier INNER JOINBarang ON Supplier.KodeSup = Barang.KodeSup
S%&%'$ pada statemen ini sama seperti statemen S%&%'$ sebelumnya, tetapi klausa
!"# berbeda. Hubungan antara dua tabel adalah bagian dari klausa !"# yang
ditentukan sebagai NN%! 1"N. etika menggunakan sintaks ini, kndisi jin ditetapkan
dengan menggunakan klausa "N khusus sebagai pengganti klausa *H%!%. ndisi
sebenarnya yang dile-atkan pada "N sama seperti yang dile-atkan pada *H%!%.
-
7/25/2019 Statemen SELECT
2/7
Menggabungkan Banyak Tabel
S2& tidak menentukan batasan untuk jumlah tabel yang mungkin digabungkan dalam
statemen S%&%'$. Peraturan dasar untuk membuat jin tetap sama. Pertama, da4tarkan
semua tabel dan kemudian tentaukan hubungan di antara setiap tabel. 'nthnyasebagai berikut 5SELECT Supplier.Nama, Barang.Nama, Barang.Harga, BarangJual.Jumla FROMBarangJual, Barang, Supplier !HERE Barang.KodeSup = Supplier.KodeSup "N#BarangJual.KodeBrg = Barang.KodeBrg "N# NoFa$%ur = &'((()&*
'nth tersebut menampilkan item pada pesanan Naktur 67778. tem pesanan
disimpan pada tabel Barang1ual. Setiap barang disimpan berdasarkan kde barang itu,
yang merujuk kepada barang dalam tabel barang. Barang dihubungkan ke supplier yang
tepat pada tabel supplier berdasarkan kde supplier, yang disimpan dengan setiap
catatan barang. lausa !"# disini menda4tar tiga tabel, dan klausa *H%!%
menetapkan kndisi jin. ndisi *H%!% tambahan kemudian digunakan untuk
menyaring hanya itemitem untuk pesanan 67778.Tipe-Tipe Join
Sejauh ini Anda hanya menggunakan jin sederhana yang dikenal sebagai NN%! 1"N
%231"N. Sekarang perhatikan tiga tipe jin tambahan 5 S%&1"N, NA$3!A& 1"N dan
"3$%! 1"N.Membuat Sel-Join
Salah satu alasan utama menggunakan alias tabel adalah untuk merujuk kepada tabel
yang sama lebih dari satu kali pada statemen S%&%'$ tunggal. Ada cnth untuk
menunjukkan hal ini. #isalkan Anda ingin mengirim sebuah surat ke semua kntak
pelanggan yang bekerja untuk perusahaan yang sama dimana 1im 1nes bekerja. 2uery
ini mengharuskan Anda pertamatama mencari perusahaan tempat 1im 1nes bekerja,
dan selanjutnya pelanggan mana yang bekerja untuk perusahaan tersebut. Berikut ini
satu cara untuk menyelesaikan masalah tersebut 5SELECT +.KodeCu-, +.Nama, +.Kon%a$ FROM Cu-%omer +, Cu-%omer +' !HERE+.Nama = +'.Nama "N# +'.Kon%a$=&Jim Jone-&
+ua tabel yang dibutuhkan pada 9uery ini sebenarnya adalah tabel yang sama, dan
karena itu tabel 'ustmer muncul dua kali pada klausa !"#. #eskipun ini sah sama
sekali, tetapi semua re4erensi ke tabel 'ustmer akan ambigus karena +B#S tidak
mengetahui tabel 'ustmer yang Anda rujuk.
3ntuk memecahkan masalah ini, digunakan aliasalias tabel. ejadian pertama pada
'ustmer punya alias c:, dan kejadian kedua mempunyai alias c6. Sekarang aliasalias
itu dapat digunakan sebagai nama tabel. Statemen S%&%'$, misalnya, menggunakan
prefks c: untuk menyatakan eksplisit nama lengkap dari feld yang diinginkan. 1ika ini
tidak dilakukan, +B#S akan menghasilkan sebuah errr karena ada dua feld bernama
deSup, Nama dan ntak.
+B#S tidak dapat mengetahui yang mana yang Anda inginkan (bahkan sekalipun feld
itu hanya satu dan sama). lausa *H%!% pertamatama menghubungkan tabel, dan
-
7/25/2019 Statemen SELECT
3/7
kemudian menyaring data dengan ntak pada tabel kedua untuk mengembalikan
hanya data yang diinginkan.!atural Join
apanpun tabel digabungkan, sedikitnya ada satu feld yang akan muncul pada lebih
dari satu tabel (feld yang digabungkan). Penggabungan standar (NN%! 1"N yang Anda
pelajari diatas) mengembalikan semua data, bahkan banyak kejadian pada feld yangsama. NA$3!A& 1"N hanya mengurangi kejadian tersebut sehingga hanya satu pada
setiap feld yang dikembalikan.Sebenarnya bukan NA$3!A& 1"N yang melakukan hal tersebut, melainkan Anda yangmelakukan. NA$3!A& 1"N adalah jin dimana dilakukan dengan menggunakan -ildcard(S%&%'$ ;) untuk satu tabel dan subkumpulan eksplisit dari feld untuk semua tabellainnya. Berikut ini cnthnya 5
SELECT C., /.NoFa$%ur, /.Tanggal, BJ.KodeBrg, BJ.Jumla, BJ.Harga FROM Cu-%omer C,/en0ualan /, BarangJual BJ !HERE C.KodeCu- = /.KodeCu- "N# BJ.NoFa$%ur =/.NoFa$%ur "N# KodeBrg = &R1"N(&
Pada 'nth tersebut, -ildcard digunakan hanya untuk tabel yang pertama. Seluruhfeld lainnya dengan jelas di da4tar sehingga tidak ada feld duplikat yang di dapat
kembali.
Sebenarnya, setiap NN%! 1"N yang Anda buah sejauh ini adalah NA$3!A& 1"N, dan
Anda tidak pernah membutuhkan NN%! 1"N yang bukan NA$3!A& 1"N."uter Join
ebanyakan jin menghubungkan recrdrecrd dalam satu tabel dengan recrdrecrd
tabel lainnya. $etapi kadangkadang Anda perlu memasukkan recrd yang
tidak mempunyai recrdrecrd yang berhubungan. Sebagai cnth, Anda mungkin
menggunakan jin untuk menyelesaikan tugas berikut 5
#enghitung berapa banyak pesanan yang dibuat leh setiap pelanggan,
termasuk pelanggan yang sudah melakukan pesanan.
#enda4tar semua barang dengan banyaknya pesanan, termasuk barang yang
tidak dipesan leh siapapun.
#enjumlah ratarata ukuran penjualan, mencakup rekening pelanggan yang
belum melakukan pesanan.
Pada setiap cnth tersebut, jin memasukkan recrdrecrd tabel yang tidak
mempunyai recrd berkaitan dalam tabel terkait. $ipe jin ini disebut "3$%! 1"N.
Statemen S%&%'$ berikut adalah NN%! 1"N. Statemen ini mendapatkan kembali da4tar
semua pelanggan dan pesanan mereka 5SELECT Cu-%omer.KodeCu-, /en0ualan.NoFa$%ur FROM Cu-%omer INNER JOIN
/en0ualan ON Cu-%omer.KodeCu- = /en0ualan.KodeCu-
3ntuk mendapatkan kembali da4tar semua pelanggan, termasuk pelanggan yangtidak membuat pesanan, Anda dapat melakukan hal berikut 5
SELECT Cu-%omer.KodeCu-, /en0ualan.NoFa$%ur FROM Cu-%omer LEFT O2TER JOIN/en0ualan ON Cu-%omer.KodeCu- = /en0ualan.KodeCu-
-
7/25/2019 Statemen SELECT
4/7
Seperti NN%! 1"N, statemen S%&%'$ ini menggunakan key-rd "3$%! 1"N untuk
menentukan tipe jin. $etapi tidak seperti NN%! 1"N, yang menghubungkan recrd
pada kedua tabel, "3$%! 1"N juga memasukkan recrd dengan yang tidak
berhubungan. +an seperti terlihat pada cnth sebelumnya, ketika membuat "3$%!
1"N, Anda harus menentukan tabel dari mana Anda memasukkan semua recrd. 1ika
Anda menggunakan sintaks "3$%! 1"N, Anda harus menggunakan key-rd !
-
7/25/2019 Statemen SELECT
5/7
Penjelasan diatas adalah logika sederhana bagaimana menampilkan isi tabel dari banyak
tabel. Penerapan pada kasus saya begini. Berikut " tabel yang akan saya tampilkan isinya.
#ontoh ini Saya ambil dari proyek yang pernah saya buat tentansistem informasi iklan.
$ %abel pada sistem informasi tersebut:
!. %abel &ser
%abel user
'. %abel (klan
%abel (klan
". %abel )ategori (klan
%abel )ategori (klan
$. %abel Pasang (klan
%abel Pasang (klan
an Berikut #ara Menampilkan ua %abel atau lebih (si atabaseyang Saya buat:
1
2
!"#$= %SELECT a.id_&a"a'(, a.)dl_i$la', a.i"i_i$la', a.a+al, a.a$i-, b.id_$ate(WHEREa.id_$ate(-i = b.id_$ate(-i a'da.id_i$la' = c.id_i$la' a'da.id_"e- = d.id_"e-
an berikut inilah hasil eksekusi dari database dengan query diatas:
http://www.sistemphp.com/contoh-aplikasi-sistem-informasi-pemasangan-iklan-php/http://www.sistemphp.com/cara-menampilkan-dua-tabel-atau-lebih-isi-database/http://www.sistemphp.com/contoh-aplikasi-sistem-informasi-pemasangan-iklan-php/http://www.sistemphp.com/cara-menampilkan-dua-tabel-atau-lebih-isi-database/ -
7/25/2019 Statemen SELECT
6/7
Menampilkan dua tabel atau lebihemikian tutorial menampilan tutorial join pada mysql. Semoga dapat membantu dan
menambah *a*asan Anda tentang query database. an cara diatas, dapat Anda
kembangkan dan eksplorasi sesuai dengan logika Anda sendiri.
# $ntuk meng%itung ¨a% re'or( pa(a tabel
tblpega)ai*sele't 'ount+, rom tblpega)ai.
# $ntuk menampilkan kota penempattan pa(atabel tblpenempatan*sele't ket/penempatan rom tblpenempatan.
# $ntuk menampilkan kota penempatan (enganti(ak menampikan kota yang sama pa(a tabel
tblpenempatan*sele't (istin't tblpenempatan rom tblpenempatan.
# $ntuk menampilkan nama (an i( &abatan yangmempunyai &abatan sebagai Manager*sele't nama0i(/&abatan rom tblpega)ai )%ere i(/&abatanlike 12manager3.
# Tampilkan pega)ai (engan i( 4 05 0(an 64SELECT i(/pega)ai 7R"M tblpega)ai WHERE i(/pega)ai*343 or i(/pega)ai*353 "R i(/pega)ai*3643.8**atau bisa lebi% (ari 4 (ata**SELECT i(/pega)ai 7R"M tblpega)ai WHERE i(/pega)aiI! +9669096:90959.
-
7/25/2019 Statemen SELECT
7/7
# Menggabungkan ; Tabel (engan J"I!SELECT tbl(i