MySQL Upsert – UPDATE If Row Exist With Multiple Columns As Parameter

Like the other RDBMS out there, MySQL has a feature such as Upsert Statement. Upsert Statement means it’s query will update the row if data / row that match with our key or parameters (contraint, foreign key, or some columns we use as key in where clause) already exist. But if data / row doesn’t exist before, it will insert as a new row in our table.

Continue reading

Solution for MySQL (XAMPP) Can’t Start in OS X Yosemite

Beberapa hari yang lalu saya baru saja upgrade OS X dari Mavericks menjadi Yosemite (10.10), namun barusan saja saya mengoperasikan MySQL server di Mac saya yang sudah pakai baju barunya :D. Saya memakai XAMPP versi 1.8.3-1 yang sudah terpasang sejak lama, sejak masih pakai OS X Mountain Lion. Sampai akhirnya saya upgrade dari Mavericks ke Yosemite, tetap pakai XAMPP versi 1.8.3-1, namun di XAMPP yang versi 1.8.3-1 mengalami masalah yaitu tidak bisa start service MySQL. Saya sudah coba beberapa kali start lagi dan lagi service MySQL nya dari Application Manager kepunyaan XAMPP, tapi tetap tidak menunjukkan hasil yang baik, atau masih tetap tidak bisa run service MySQL-nya.

Setelah browsing solusi paling banyak adalah upgrade versi XAMPP ke yang terbaru, tapi saya tidak berkeinginan untuk upgrade XAMPP. Karena pasti harus download lagi, tau sendiri lah kapasitas file installer XAMPP kan besar, jadi males banget buat download lagi :P. Tapi akhirnya ketemu juga solusi yang simple dan sangat mudah diterapkan untuk mengatasi masalah tidak bisa start/run service MySQL XAMPP 1.8.3-1 di Yosemite ini, adalah dengan cara berikut : Continue reading

Query MySQL Untuk Menghitung Umur/Usia

Malam ini aku ingin share salah satu pengetahuan mengenai SQL Query (Khususnya di MySQL) dengan studi kasus bagaimana caranya kita bisa memperoleh atau mengetahui berapa umur / usia dari data seseorang yang ada di dalam database. Jadi misalkan dalam suatu tabel, anggap saja nama tabelnya adalah tabel “karyawan” dimana terdapat satu field/kolom dengan nama “tanggal_lahir”, terdapat suatu record value dari data karyawan perusahaan dengan struktur sebagai berikut :

nama_karyawan tanggal_lahir
Rendra Kurniawan 2012/05/23

Dari contoh diatas, saya ingin mengetahui berapa umur Rendra saat ini (Dengan tanggal saat ini sebagai patokan)? Query berikut bisa kalian coba :

SELECT nama_karyawan, tanggal_lahir, (YEAR(CURDATE())-YEAR(tanggal_lahir)) AS umur FROM karyawan

Maka akan didapatkan hasil sebagai berikut :

nama_karyawan tanggal_lahir umur
Rendra Kurniawan 2012/05/23 22

Yap, sekian semoga bisa bermanfaat di lain waktu πŸ™‚
Terima Kasih

mysql-query-browser

MySQL Query Gabung Lebih Dari 1 Record Row

Udah lama nih gag update blog :), akhirnya punya bahan juga untuk share lagi. Kali ini aku coba bagi pengalaman mengenai SQL Query. Jadi query ini tujuannya untuk menggabungkan beberapa data atau record yang ada di dalam suatu table menjadi satu tampilan atau menjadi satu record row berdasarkan ID tertentu.

Jadi misalkan begini, asumsi kita punya tabel dengan nama “detail_produksi” dengan struktur dan sample record sebagai berikut :

ID_DETIL ID_PRODUKSI NAMA_BAHAN
1 1 Bahan A
2 1 Bahan B
3 2 Bahan Z

Nah, yang akan ditampilkan harus seperti berikut ini :

ID_PRODUKSI BAHAN_PRODUKSI
1 Bahan A, Bahan B
2 Bahan Z

Poinnya adalah, Bahan A dan Bahan B tergabung menjadi satu karena mempunyai ID_PRODUKSI yang sama. Bagaimana querynya??? Silahkan lihat query berikut :

SELECT ID_PRODUKSI, GROUP_CONCAT(NAMA_BAHAN SEPARATOR ', ') AS BAHAN_PRODUKSI FROM detail_produksi GROUP BY ID_PRODUKSI

Kunci utama terletak di bagian “GROUP_CONCAT” yang merupakan fungsi bawaan dari MySQL sendiri. Oke sekian, semoga bisa bermanfaat untuk semua πŸ™‚

PHP Multiple MySQL Database Connection

PHP MySQL Database Multiple Connection ?
Maksudnya adalah, di project yang sama atau di halaman yang sama kalian bisa melakukan koneksi ke Database di MySQL yang berbeda.
Terkadang hal seperti ini diperlukan, contohnya barusan ini aku dapet permasalahan yang mengharuskan untuk mengakses
2 Database sekaligus dalam suatu proses bisnis.
Syntax-nya sama aja sih, cuman ditambahin parameter yang jarang sekali dipakai di fungsi mysql_connect() miliknya PHP.
Seperti yang disebutkan pada PHP Manual pembahasan mysql_connect(), bahwa disana disebutkan ada
5 parameter yang bisa digunakan. Biasanya kita hanya memakai 3 parameter pertama nya kan?

Oke kembali ke permasalahan, kali ini kita butuh parameter keempat (TRUE/FALSE), yang berguna menjadikan koneksi baru tanpa mengganggu
koneksi yang sudah ada sebelumnya. Langsung contohnya seperti ini :

# mengatur koneksi dan disimpan dalam satu variabel
$koneksi_a = mysql_connect($hostname, $username, $password);
$koneksi_b = mysql_connect($hostname, $username, $password, true);

# mengatur pemilihan database sesuai koneksi
mysql_select_db('database_a', $koneksi_a);
mysql_select_db('database_b', $koneksi_b);

# contoh untuk melakukan query
# query dengan koneksi pertama
mysql_query('SELECT * FROM TABEL_DB_A', $koneksi_a);
# query dengan koneksi kedua
mysql_query('SELECT * FROM TABEL_DB_B', $koneksi_b);

Yap, kurang lebih seperti itulah, cuman aku pernah kepikiran juga (belum pernah aku implementasikan :mrgreen:) bahwa tetap bisa
olah Database lebih dari satu dengan hanya menggunakan 1 koneksi, hanya pakai alternatif pada Query SQL nya.

wavecom-fastrack-gammu-smsgateway

Solusi SMS Gateway Gammu Dengan Modem Wavecom Fastrack

Selamat malam semuanya :D,,,
Kali ini aku coba sharing mengenai bagaimana agar sukses untuk membuat sistem / aplikasi SMS Gateway menggunakan modem Wavecom Fastrack dengan Gammu sebagai bridge nya. Kenapa saya membahas ini lebih lanjut? karena kebanyakan (termasuk saya) developer pasti pernah kesulitan saat melakukan konfigurasi Gammu dengan Mode Wavecom Fastrack ini. Entah itu masalahnya tidak bisa kirim SMS ataupun terima SMS.

Tadi saya juga sempat kebingungan kembali karena dapat project pembuatan SMS Gateway dengan Modem Wavecom ini, akhirnya setelah otak-atik sana sini, Alhamdulillah akhirnya bisa sukses :).
Mungkin ini memang bukan solusi utama, namun yang pasti solusi ini insyaAllah membantu :). Agar bisa membuat SMS Gateway dengan Modem ini, saya anjurkan pakai Gammu dengan Versi 3 keatas. Karena saya sudah coba dengan versi 3 kebawah sangat kesulitan, dalam arti tidak semua Sistem Operasi sukses dengan modem ini. Tapi setelah saya download Gammu yang terbaru (v3.1) syukur Alhamdulillah langsung lancar dan berhasil membuat SMS Gateway Gammu dengan Modem Wavecom Fastrack ini. Continue reading

Proper Case/Title Case MySQL

Selamat pagi semua, kali ini aku coba berbagi mengenai suatu cara untuk mengubah jenis huruf (Case/Change Case) di MySQL Query. Syntax default bawaan dari MySQL hanya UCASE & LCASE, nah masing-masing fungsi tersebut hanya bisa digunakan untuk mengubah semua huruf dalam suatu text ke bentuk kapital/huruf besar semua atau huruf kecil semua.

Dari sini muncul pertanyaan, gimana caranya agar hanya huruf depan di tiap kata saja yang besar, yang lainnya kecil (Biasa disebut sebagai proper case/title case).

Oke, untuk contoh querynya adalah sebagai berikut :

UPDATE nama_tabel SET nama_field = CONCAT(UPPER(SUBSTRING(nama_field, 1, 1)), LOWER(SUBSTRING(nama_field FROM 2)))

Semoga bermanfaat πŸ™‚

Mengatasi Masalah “data provider or other service returned an E_FAIL status delphi” Di Delphi

Selamat pagi semua πŸ™‚ ketemu lagi… kali ini aku coba share mengenai Delphi lagi πŸ˜€ soalnya lagi dapet project yang mengharuskanku pake ni Language,hehe.
Jadi ceritanya gini, waktu buat proses CRUD Database MySQL dengan Delphi tiba-tiba saat di compile ulang malah muncul error seperti pesan diatas, yaitu “data provider or other service returned an E_FAIL status delphi” … aku coba restart IDEnya tetep aja kayak gitu pas aku coba running. Dan akhirnya aku nemuin solusinya, ternyata di salah satu table di MySQL ku terdapat record yang mana fieldnya berupa “datetime” dan disalah satu recordnya berisi “0000-00-00 00:00:00” , setelah aku coba ganti value record pada field tersebut dengan waktu lainnya (selain 0)… program delphi ku kembali bisa di Running & Compile πŸ™‚

Senangnya akhirnya, hehehe… oke sekian pengalaman dariku… semoga bermanfaat kelak πŸ˜‰

Cara Install & Setting PHP + Webserver Apache + MySQL + phpMyAdmin Di Ubuntu 10.04

Yap, thread kali ini adalah dokumentasi dari Praktikum Jaringan Komunikasi saya sebenernya, :mrgreen:
Jadi ini membahas mengenai bagaimana caranya menginstall dan mengkonfigurasi Apache Webserver, MySQL sebagai databasenya dan phpMyAdmin sebagai interface untuk mengelola databasenya.
Ubuntu yang saya pakai adalah Ubuntu 10.04 (Lucid).
Oke, coba ikuti langkah-langkah berikut, tapi sebelumnya pastikan PC/Notebook kalian bisa terkoneksi ke Internet πŸ™‚

  1. Buka terminal, kemudian login sebagai superuser (root)
  2. Ketikkan apt-get install apache2[Enter], kemudian tunggu hingga proses download dan install selesai.
  3. Ketikkan apt-get install php5 libapache2-mod-php5[Enter], tunggu hingga proses download dan install selesai.
  4. Ketikkan apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql[Enter]. Nah pada langkah yang ini ada hal yang perlu diperhatikan, ditengah-tengah instalasi kalian akan ditanyakan untuk memasukkan Password MySQLnya. Silahkan masukkan passwordnya terserah kalian, yang penting gampang diingat πŸ™‚
  5. Setelah selesai install MySQL, sekarang install interface phpMyAdmin nya. Ketikkan apt-get install phpmyadmin[Enter]. Tunggu hingga proses selesai.
  6. Setelah 4 langkah instalasi diatas selesai dengan baik, sekarang tinggal mengarahkan phpmyadmin ke dalam folder webserver kita. Karena default path instalasi phpmyadmin tidak dalam satu folder dengan dimana webserver diinstall. Tenang, kalian tinggal ketikkan ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin[Enter]
  7. Nah, ini langkah terakhir… kita tinggal restart service apache2 karena tadi kita sempat merubah konfigurasi defaultnya. Caranya dengan ketikkan /etc/init.d/apache2 restart
  8. Sekarang tinggal dicoba melalui browser, coba akses halaman http://localhost/. Jika berhasil akan tampil “It Works!“, kurang lebih seperti itulah :D.

Oke sekian semoga ini bisa bermanfaat kelak πŸ™‚
Sampai jumpa lagi

Query Untuk Menghapus Data / Record Yang Sama (Duplikat) Di Dalam Suatu Tabel MySQL

Sesuai dengan judulnya, berikut adalah langkah – langkah yang bisa kalian pakai untuk menghapus data / record yang sama dalam suatu tabel di database MySQL hanya dengan satu Query saja. Pengetahuan ini akudapat dariΒ http://www.justin-cook.com/wp/2006/12/12/remove-duplicate-entries-rows-a-mysql-database-table/

Berikut penjelasan singkatnya …

  1. Buka MySQL Manager, pilih database yang akan diolah, kemudian masukkan query berikut, misal ini aku mau menghapus dari tabel yang bernama “pelanggan”
    CREATE TABLE tabelBaru AS SELECT * FROM pelanggan WHERE 1 GROUP BY email;
    

    “email” itu adalah field yang digunakan sebagai acuan kita untuk membedakan data yang tidak sama

  2. Setelah itu hapus tabel pelanggan, bisa dengan klik kanan – hapus tabel, atau bisa juga dengan sintaks “DROP TABLE pelanggan”
  3. Kemudian rename table “tabelBaru” dengan nama table “pelanggan”
  4. Selesai, coba cek dah sekarang record tabelnya πŸ˜€
Semoga bermanfaat …