statemen select

Upload: tulus-p-sihaloho

Post on 01-Mar-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 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 &umla% 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