Showing posts with label PHP. Show all posts
Showing posts with label PHP. Show all posts

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 ....

Friday, February 15, 2008

Learning PHP - Hypertext Preprocessor

PHP is a powerful server-side scripting language for creating dynamic and interactive websites.

PHP is the widely-used, free, and efficient alternative to competitors such as Microsoft's ASP. PHP is perfectly suited for Web development and can be embedded directly into the HTML code.

The PHP syntax is very similar to Perl and C. PHP is often used together with Apache (web server) on various operating systems. It also supports ISAPI and can be used with Microsoft's IIS on Windows.

What is PHP?

* PHP stands for PHP: Hypertext Preprocessor
* PHP is a server-side scripting language, like ASP
* PHP scripts are executed on the server
* PHP supports many databases (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.)
* PHP is an open source software (OSS)
* PHP is free to download and use

What is a PHP File?

* PHP files may contain text, HTML tags and scripts
* PHP files are returned to the browser as plain HTML
* PHP files have a file extension of ".php", ".php3", or ".phtml"

What is MySQL?

* MySQL is a database server
* MySQL is ideal for both small and large applications
* MySQL supports standard SQL
* MySQL compiles on a number of platforms
* MySQL is free to download and use

PHP + MySQL

* PHP combined with MySQL are cross-platform (means that you can develop in Windows and serve on a Unix platform)

Why PHP?

* PHP runs on different platforms (Windows, Linux, Unix, etc.)
* PHP is compatible with almost all servers used today (Apache, IIS, etc.)
* PHP is FREE to download from the official PHP resource: www.php.net
* PHP is easy to learn and runs efficiently on the server side

Where to Start?

* Install an Apache server on a Windows or Linux machine
* Install PHP on a Windows or Linux machine
* Install MySQL on a Windows or Linux machine