Sunday, August 15, 2010

Penggunaan LEFT, INNER, dan RIGHT JOIN

Kali ini aku sedikit sharing buat rekan-rekan semua, terutama buat yang suka dengan database MySQL. tapi g cuma database MySQL aja, buat database yang lain sepertinya hal ini bisa dicoba, mungkin sedikit bahasanya yang beda. Coz semua bahasa pemograman itu intinya sama, tinggal disesuain aja dengan logat bahasa program itu sendiri. hehehe ....

Ok lanjut aja yach .... mumpung masih pagi ini ( jam 6 ), ntar lagi aku mo mandi trus berangkat jadi kuli. Mungkin rekan-rekan dah tahu penggunaan query di dB MySQL, namun kali ini coba query dengan relasi antar tabel.

Dalam query tabel di dB ada tiga macam ( yang kuketahui saat ini ) :
- LEFT JOIN
- INNER JOIN
- RIGHT JOIN

LEFT JOIN adalah relasi antar tabel, namun query yang ditampilkan adalah mengacu pada tabel yang sebelah kiri / tabel utama.
misal seperti ini :

mysql> select * from mahasiswa order by id asc;
+----+--------------+----------+-----------------------+----------+
| id | nim | kota | fakultas | angkatan |
+----+--------------+----------+-----------------------+----------+
| 1 | A10.111.1031 | Semarang | Manajemen Informatika | 2010 |
| 2 | A10.111.1032 | Semarang | Teknik Informatika | 2010 |
| 3 | A11.111.1040 | Kudus | Manajemen Informatika | 2009 |
| 4 | A11.111.1041 | Salatiga | Sistem Informasi | 2009 |
| 5 | A11.111.1043 | Demak | Teknik Informatika | 2010 |
+----+--------------+----------+-----------------------+----------+
5 rows in set (0.05 sec)

mysql> select * from nim order by id asc;
+----+--------------+----------+
| id | nim | nama |
+----+--------------+----------+
| 1 | A10.111.1031 | Musthofa |
| 2 | A10.111.1032 | Bisri |
| 3 | A11.111.1040 | Alex |
| 4 | A11.111.1041 | Graham |
+----+--------------+----------+
4 rows in set (0.00 sec)

Jika kedua tabel itu kita relasi dengan LEFT JOIN maka akan menjadi seperti ini :

mysql> select a.id, a.nim, a.kota, a.fakultas, a.angkatan, b.nama from mahasiswa a left join nim b on a.nim=b.nim;
+----+--------------+----------+-----------------------+----------+----------+
| id | nim | kota | fakultas | angkatan | nama |
+----+--------------+----------+-----------------------+----------+----------+
| 1 | A10.111.1031 | Semarang | Manajemen Informatika | 2010 | Musthofa |
| 2 | A10.111.1032 | Semarang | Teknik Informatika | 2010 | Bisri |
| 3 | A11.111.1040 | Kudus | Manajemen Informatika | 2009 | Alex |
| 4 | A11.111.1041 | Salatiga | Sistem Informasi | 2009 | Graham |
| 5 | A11.111.1043 | Demak | Teknik Informatika | 2010 | NULL |
+----+--------------+----------+-----------------------+----------+----------+
5 rows in set (0.00 sec)

nah terlihat total data yang ditampilkan ada 5 baris, namun lihat pada baris kelima kolom nama, disitu tertulis NULL. kenapa NULL ? yach karena data tidak ditemukan di tabel nim.

Nah, jika INNER JOIN query yang ditampilkan adalah data yang sama antara tabel pertama dengan tabel kedua, misalnya kayak gini :

mysql> select a.id, a.nim, a.kota, a.fakultas, a.angkatan, b.nama from mahasiswa a right join nim b on a.nim=b.nim;
+------+--------------+----------+-----------------------+----------+----------+
| id | nim | kota | fakultas | angkatan | nama |
+------+--------------+----------+-----------------------+----------+----------+
| 1 | A10.111.1031 | Semarang | Manajemen Informatika | 2010 | Musthofa |
| 2 | A10.111.1032 | Semarang | Teknik Informatika | 2010 | Bisri |
| 3 | A11.111.1040 | Kudus | Manajemen Informatika | 2009 | Alex |
| 4 | A11.111.1041 | Salatiga | Sistem Informasi | 2009 | Graham |
+------+--------------+----------+-----------------------+----------+----------+
4 rows in set (0.00 sec)

Klo yang ini, data yang ditampilkan adalah data yang sama/data yang ada antara tabel mahasiswa dan tabel nim.

Nah yang terakhir RIGHT JOIN, kebalikan dari LEFT JOIN tabel yang digunakan sebagai keynya adalah tabel kedua. contohnya kayak gini :

mysql> select a.id, a.nim, a.kota, a.fakultas, a.angkatan, b.nama from mahasiswa a right join nim b on a.nim=b.nim;
+------+--------------+----------+-----------------------+----------+----------+
| id | nim | kota | fakultas | angkatan | nama |
+------+--------------+----------+-----------------------+----------+----------+
| 1 | A10.111.1031 | Semarang | Manajemen Informatika | 2010 | Musthofa |
| 2 | A10.111.1032 | Semarang | Teknik Informatika | 2010 | Bisri |
| 3 | A11.111.1040 | Kudus | Manajemen Informatika | 2009 | Alex |
| 4 | A11.111.1041 | Salatiga | Sistem Informasi | 2009 | Graham |
+------+--------------+----------+-----------------------+----------+----------+
4 rows in set (0.00 sec)

ini hampir sama dengan INNER JOIN, namun jika pada tabel nim saya tambahkan lagi, misal tabel nim menjadi seperti ini:

mysql> select * from nim order by id asc;
+----+--------------+----------+
| id | nim | nama |
+----+--------------+----------+
| 1 | A10.111.1031 | Musthofa |
| 2 | A10.111.1032 | Bisri |
| 3 | A11.111.1040 | Alex |
| 4 | A11.111.1041 | Graham |
| 5 | A20.111.1111 | THofu |
| 6 | A20.111.1112 | Zida |
+----+--------------+----------+
6 rows in set (0.00 sec)

mysql>

dan jika kita query lagi dengan RIGHT JOIN, maka bisa liat sendiri terdapat perbedaan kan.

mysql> select a.id, a.nim, a.kota, a.fakultas, a.angkatan, b.nama from mahasiswa a right join nim b on a.nim=b.nim;
+------+--------------+----------+-----------------------+----------+----------+
| id | nim | kota | fakultas | angkatan | nama |
+------+--------------+----------+-----------------------+----------+----------+
| 1 | A10.111.1031 | Semarang | Manajemen Informatika | 2010 | Musthofa |
| 2 | A10.111.1032 | Semarang | Teknik Informatika | 2010 | Bisri |
| 3 | A11.111.1040 | Kudus | Manajemen Informatika | 2009 | Alex |
| 4 | A11.111.1041 | Salatiga | Sistem Informasi | 2009 | Graham |
| NULL | NULL | NULL | NULL | NULL | THofu |
| NULL | NULL | NULL | NULL | NULL | Zida |
+------+--------------+----------+-----------------------+----------+----------+
6 rows in set (0.01 sec)

mysql>

Selamat mencoba ....

Saturday, May 29, 2010

Waktu sekarang di PHP

// Waktu Setempat
$hari = array("Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu");
$hr = date("w");
$tanggal = date("Y-m-d");
$tgl = date("d");
$bln = date("M");
$thn = date("Y");
$jam = date("H:i:s");

Sorry, klo gw nulis script di atas tu copast. Tp mang bener sich, aku copast dr program yang dah jadi. Klo lo semua mo bikin waktu setempat di PHP bisa menggunakan script di atas. Tp sebelumnya jangan lupa set dulu Regional waktunya. Bisa2 nanti waktunya beda lagi.

$tanggal = date("Y-m-d"); ====> jadinya 2010-01-01
$tgl = date("d"); ====> jadinya 01
$bln = date("M"); ====> jadinya 01
$thn = date("Y"); ====> jadinya 2010
$jam = date("H:i:s"); ====> jadinya 12:15:00

Atau paling gampang, mending coba sendiri deh, di echo aja.


Sunday, January 31, 2010

Web Editor di Linux dengan Kompozer

Kebetulan ada kebutuhan untuk membuat web. Wah.. dah lama banget gak mainan web lagi. Karena sekarang dah full pakai linux (Ubuntu 8.04 LTS) maka nya saya memutuskan untuk menggunakan web editor yang paling sering saya gunakan, dan yang pastinya gratis :) yaitu “Kompozer”.

Sebetulnya banyak sekali program web editor dilinux seperti bluefish, scream, dan lainnya. Namun saya sudah terbiasa dengan kompozer ini. Kelebihan dari kompozer adalah web editor berbasis GUI yang sudah mendukung mode grafis editor (WYSIWYG). Lain dengan sebagian editor web dilinux lainnya yang mana kita masih mengedit dari source code webnya.

Dengan Kompozer ini kita dapat membuat table maupun frame sesuai dengan yang kita inginkan dengan mudah, bahkan memasukan objek seperti gambar dan membuat link juga tingal klik saja. Program kompozer ini mirip sekali dengan Microsoft Frontpages milik Microsoft. Ya.. walau fiturenya masih sangat terbatas tetapi sangat membantu sekali terutama bagi pemula seperti saya ini :)

Untuk menginstall kompozer ini di ubuntu sangat mudah, bisa di install dari synaptic atau dari terminal console :

$ sudo apt-get install kompozer

Selengkapnya, silakan lihat di http://ubuntulinux.or.id/blog/2009/07/22/web-editor-di-linux-dengan-kompozer/