Setelah anda sudah menguasai penggunaan MySQL Query Browser sebagai tempat ‘belajar’ bahasa SQL, di artikel ini saya ingin mendiskusikan dengan anda tentang perintah SELECT ini kemungkinan besar akan kita gunakan sebanyak sebesar 75% dari total kegiatan ber-SQL kita nanti. Dengan perintah SELECT inilah yang memungkinkan kita bisa melihat dan memanipulasi data-data table di MySQL server nantinya.
OK, langsung saja. Misal saja kita mempunyai 4 table yaitu:
- tbl_master_pelanggan, yang terdiri dari field-field: kode_pelanggan, nama_pelanggan, alamat, kota, kode_pos, tanggal_masuk.
- tbl_penjualan, yang terdiri dari field-field: kode_transaksi, tanggal_penjualan, kode_pelanggan, keterangan, modified_date, modified_by.
- tbl_detail_penjualan, yang terdiri dari field-field: id_trans, kode_penjualan, kode_barang, jumlah, harga_jual, discount.
- tbl_master_barang, yang terdiri dari field-field: kode_barang, nama_barang, satuan, min_stock, keterangan, lokasi_gambar.
Di sini kita akan membahas bagaimana menampilkan data dari table-table tersebut dengan menggunakan perintah SELECT. Untuk syntax perintah dasar SELECT sendiri sebagai berikut:
SELECT nama_kolom_1, nama_kolom_2 FROM nama_table;
Kasus 1, saya ingin menampilkan semua data master pelanggan yang terletak di table tbl_master_pelanggan, maka perintah yang saya ketik di Query Edit adalah sebagai berikut:
SELECT * FROM tbl_master_pelanggan;
Tapi jika saya hanya ingin menampilkan kolom nama_pelanggan dan alamat saja, ketik seperti ini:
SELECT nama_pelanggan, alamat FROM tbl_master_pelanggan;
Anda bisa melihat data dengan kriteria tertentu, untuk melakukan itu anda bisa menggunakan tambahan perintah WHERE. Misal anda ingin melihat nama barang (field: nama_barang) yang kata depannya cover, maka perintah yang harus anda ketik adalah sebagai berikut:
SELECT * FROM tbl_master_pelanggan WHERE nama_barang LIKE 'cover%'
Karena type data dari kolom nama_barang adalah VarChar maka anda harus menambahkan karakter petik tunggal (‘) di dalam keyword nya. Kalau type data-nya adalah integer dan type angka yang lainnya, petik tunggal tidak diperlukan. Untuk mencari semua karakter setelah nama barang cover, saya menggunakan tanda wildcard % supaya MySQL mencari semua data yang kata depannya cover. Dan jika anda menggunakan wil card character, operator yang anda gunakan adalah LIKE. Jika tidak anda bisa menggunakan operator sama dengan (=). Untuk manipulasi data angka anda bisa menggunakan operator <, >, =, BETWEEN, <=, >=.
Kasus 2, saya ingin menampilkan data 2 table yang saling berkaitan. Ini dalam ilmu-nya sering disebutan normalisasi. Dengan normalisasi anda tidak perlu menyimpan data nama-nama pelanggan di dalam transaksi penjualan, cukup kode pelanggan nya saja yang perlu anda simpan, hal ini juga untuk menghindari duplikasi. Untuk menghubungkan dua table atau lebih yang dihubungkan dengan satu kode transaksi yang sudah kita tentukan tadi kita akan menggunakan perintah INNER JOIN. Perlu diingat bahwa kode yang akan dipakai untuk normalisasi ini adalah kode transaksi yang tidak terdapat duplikasi data di dalamnya atau sering disebut primary key. Dalam contoh ini saya akan menghubungkan tabel penjualan dan detail item penjualan. Kalau di contoh table saya, menghubungkan table 2 dan 3. Perintah yang kita ketikkan adalah sebagai berikut:
SELECT tp.kode_transaksi, tp.tanggal_transaksi, tp.kode_pelanggan, tp, keterangan, dtp.kode_barang, dtp.jumlah, dtp.harga_jual, dtp.discount FROM tbl_penjualan AS tp INNER JOIN tbl_detail_penjualan AS dtp ON tp.kode_transaksi=dtp.kode_penjualan;
Dari contoh di atas bisa di lihat bahwa nama table bisa di alias-kan untuk memperpendek nama table, deklarasi alias bisa ditentukan di asal table setelah FROM. Untuk penggunaan INNER JOIN jika dilihat dari contoh tersebut juga sangatlah mudah, tinggal ketik table1 INNER JOIN table 2 ON kode_table1=kode_table2. Usahakan dalam syntax SQL yang menggunakan INNER JOIN sertakan juga alias-nya selain untuk memperpendek nama table, hal itu juga dapat menghindarkan kita dari ‘tabrakan’ nama field/kolom yang sama. Misalnya, table 1 mempunyai field kode_pelanggan dan table 2 juga mempunyai field kode_pelanggan dan jika anda tidak menyertakan aliasnya dengan format alias.nama_kolom, anda akan mendapat masalah di kemudian waktu.
Nah, sekarang saya akan menggabungkan 4 table yang saya perlihatkan diatas. Jika anda melihat dari 4 table tersebut makan korelasi-nya adalah tbl_penjualan dihubungkan dengan tbl_detail_penjualan, lalu 2 table tersebut dihubungkan dengan table tbl_master_pelanggan dan tbl_master_barang. Syntax yang akan saya tulis adalah sebagai berikut:
SELECT tp.kode_transaksi, tp.tanggal.transaksi, tp.kode_pelanggan, mp.nama_pelanggan, dtp.kode_barang, mb.nama_barang, dtp.jumlah, dtp.harga_jual, dtp.discount, (dtp.jumlah*dtp.harga_jual)-((dtp.jumlah*dtp.harga_jual)-discount) AS sub_total
FROM tbl_penjualan AS tp INNER JOIN tbl_detail_penjualan AS dtp ON tp.kode_transaksi=dtp.kode_penjualan
INNER JOIN tbl_master_pelanggan AS mp ON tp.kode_pelanggan=mp.kode_pelanggan
INNER JOIN tbl_master_barang AS mb ON dtp.kode_barang=mb.kode_barang;
Cukup mudah kan? Kita akan belajar lagi untuk perintah-perintah SQL yang lainnya.
Wah…asyiknya belajar bahasa pemrograman, masalahnya saya masih awam dalam bidang ini. Kebetulan saat ini saya sedang mempelajari VB6 dan SQL sebagai databasenya, saya juga sedang membuat proyek kecil2an utk mempermudah saya dalam menyelesaikan pekerjaan saya karena kebetulan juga saya adalah seorang Admin. Saya ingin bertanya kalau boleh Pa’, seperti apakah syntax di vb jika saya ingin menampilkan data yang ada pada database agar dapat ditampilkan seluruhnya dalam ComboBox? Btw, saya memakai syntax sbb :
Private Sub Form_Load()
data_masterBB.RecordSource = “SELECT * FROM tb_SatuanBB”
data_masterBB.Refresh
With data_masterBB.Recordset
cmbSatuanBB.Text = !Satuan
End With
End Sub
Cuma masalahnya adalah data yang ditampilkan pada ComboBox hanya data pada baris pertamanya saja,sedangkan data pada baris-baris selanjutnya tidak ditampilkan,saya sadar kalau saya salah dalam menginput syntaxnya, karenanya saya butuh penjelasannya tentang ini Pa’.
Terima kasih
Saya sangat mengharapkan bantuan anda tentang programing VB Acces.
terimakasih..
makasih banyak atas ilmunya….
blog anda sangat membantu….
sekali lagi terima kasih…
@yani: senang sekali bisa sedikit membantu…
mas.. kalo where digunakan untuk statmen tanggal atau waktu syntaxnya gmana y?? teerimakasih
@agung: kalo di MySQL seperti ini karena MySQL mempunyai format tanggal YYYY-MM-DD -> SELECT * FROM tbl_transaksi WHERE tgl_transaksi BETWEEN ‘2009-01-01’ AND ‘2010-01-01’
kalo cara penggunaan
mysql> SELECT IF(1 ‘yes’
untuk kasus ini
“SELECT AttendanceDateTime,F1 FROM t_HrmAttendanceLog ” _
& “WHERE idBusinessPartner='” & FString(idBP) & “‘ AND idCompany='” & db.CompanyID & “‘ and ” _
& “DATE(AttendanceDateTime)='” & FDateOnly(attDate) & “‘ AND isDelete=’N’ ” _
& “ORDER BY AttendanceDateTime ASC”)
gimana ya?
@Wendy Afreza: apakah maksudnya seperti ini SELECT IF(nilai_kolom=1, ‘Yes’, ‘No’) AS ketr_hadir FROM t_Hrm…. ?
saya br belajar Mysql dari dasar,bisa enggak di kirim tutorialnya mas dari 0 sampai level sedang,saya mau banget belajar Mysql.
OS saya linux XAMPP sdh sy install
yg br sy pelajari :
create
drop
insert
update
alter
select, nah di SELECT ini banyak yg harus sy pelajari mohon tutorialnya
kok saya praktekin di vb untnuk menampilkan data yang laki2 saja gimana ya????
Select lb.no, lb.nama, lb.department, lb.tanggal , lb.jenis_lembur, lb.jam_masuk ,lb.jam_pulang ,lb.lembur1, lb.lembur2, pc.PersonalCalendarID, pc.PersonalCalendarDate, pc.Lembur , pc.Lbr1, pc.Lbr2 From T_Lembur AS lb INNER JOIN PersonalCalendar AS pc ON lb.tanggal=pc.PersonalCalendarDate; ”
Tapi data yang tampilnya dalam datagrid jadi dober-dobel padahal dalam databasenya cuma ada 2 data saja…mohon masukannya
bagai mana cara membuat sintaq sebuah bengkel
cara membuat sintaq sebuah bengkel
pungo
@Eri: wah tergantung aplikasi bengkel nya mau di buat gimana
gimana bila combo box di rubah maka secara otomatis text box ikut berubah sesuai data pada combo box, mohon penjelasannya trims
pada ms access 2007 sudah saya tuliskan seperti ini tapi nggak mau muncul juga pada text boxnya
Private Sub Kodecombo_AfterUpdate()
‘ Manampilkan nama kota
Me.nama_kota.Value = Me.Kodecombo.Column(1)
End Sub
Seperti ini juga nggak mau muncul pussing mohon pencerahnnya mas
Private Sub Kodecombo_AfterUpdate()
‘ Manampilkan nama kota
Me.[nama_kota] = Kodecombo.Column(1)
End Sub
semoga bermanfaat>>^_^