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/

Wednesday, May 27, 2009

Contoh Program Bahasa C

Kecewa .............. Ngonduk .............. Mangkel .............. Jengkel .............. itulah yang kurasakan malam ini di dalam hatiku. Semua jadi satu seakan hati ini ingin berontak. Ingin hati ku mo ngerusak laptop yang tak pake untuk bikin ni program. Percuma kamu nemenin aku tiap malem untuk bikin program. kamu yang setiap hari g pernah tidur walaupun aku sudah tertidur. Malem ga tidur, paginya g tidur, siang g tidur, sampai sore pun kamu g tidur bahkan sampai malam lagi kamu juga belum tidur. Kamu memang sudah banyak berkorban demi aku untuk bikin ni program. Mulai tanggal 24 Mei kamu sudah nemenin aku setiap saat, sampai sekarang tanggal 27 Mei kamu juga masih nemenin aku di malam yang sunyi ini. Namun kali ini kamu menemani aku bukan untuk bikin program lagi, tapi kamu sebagai teman curhatku malam ini.

Bayangin aja, pengorbananmu yang beberapa hari g tidur, cuma mo nemeni aku bikin program bahasa C, tapi apa hasilnya program yang sudah jadi dan bisa berjalan dengan baik ( bagi aku ). Ternyata tidak jadi digunakan. tidak jadi dipake, tidak jadi dipresentasikan. Sungguh aku sangat kecewa banget malam ini, sudah capek ... ngantuk ... pusing ... mumet ... ngelamun ... tanya temen ... buka buku ... cuma buat mikirn gimana caranya program ni bisa jalan.


Astaghfirullah ... Astaghfirullah ... Astaghfirullahal adzim. Hanya kata itu yang bisa menenangkan hatiku untuk nggak lagi kecewa ... ngonduk ... mangkel ... jengkel. Mungkin memang belum waktunya bagi aku untuk mempresentasikan program telah kubuat. Atau mungkin ini memang peringatanku untuk tidak sombong, tidak angkuh, dan selalu ingat kembali yang Sang Pencipta.

Daripada mubazir, program ini aku publis di blog ini, semoga dengan dipublisnya contoh program ini bisa bermanfaat bagi temen-temen yang masih belajar tentang bahasa C dan menjadi pembelajaran terpenting dalam diri saya sendiri.

contoh program bahasa C.
------------------------->
/*
program : Penjualan barang
author : Thofu && Mucis
tanggal : 20 Mei 2009
*/

#include
#include

/* =================== kamus global =========================*/
struct data
{
int no_angg,jml_beli,hrg_brg,jml_byr;
char nama[15],alamat[15],nm_brg[15];
};
struct data barang[20];
struct data temp;
int i,j,x,d;
/* =================== end kamus global ====================*/

void main()
{
menu();
}

menu()
{
/*kamus lokal*/
int pil;

/*algoritma*/
i=-1;
while (pil != 4)
{
clrscr();
garis();
judul();
gotoxy(2,24); printf("Jumlah data : %d",i+1);
gotoxy(1,4);printf (" Menu Data \n");
gotoxy(1,5);printf (" (1) Input Data \n");
gotoxy(1,6);printf (" (2) Urutkan Data \n");
gotoxy(1,7);printf (" (3) Laporan \n");
gotoxy(1,8);printf (" (4) Keluar \n");
gotoxy(1,10);printf (" Pilih : "); scanf ("%d",&pil);
if (pil==1)
input();
else if (pil==2)
urutkan();
else if (pil==3)
tampil();
else
selesai();

}
getch();
return 0;
}

judul()
{
gotoxy(18,2);printf("P R O G R A M J U A L B E L I B A R A N G");
return 0;
}

input()
{
// Jika nilai i lebih besar atau sama dengan 14 maka proses input akan dihentikan.
if (i >= 14)
{
gotoxy(30,10); printf("Maaf Database Penuh");
} else {
i=i+1;
gotoxy(23,4); printf("Formulir Jual-beli Barang");
gotoxy(23,6); printf("No. Anggota : ");
gotoxy(23,7); printf("Nama : ");
gotoxy(23,8); printf("Alamat : ");
gotoxy(23,10); printf("Nama Barang : ");
gotoxy(23,11); printf("Jumlah Beli : ");
gotoxy(23,12); printf("Harga Barang : ");
gotoxy(23,13); printf("Total Bayar : ");

gotoxy(37,6); scanf("%d",&barang[i].no_angg);
gotoxy(37,7); scanf("%s",&barang[i].nama);
gotoxy(37,8); scanf("%s",&barang[i].alamat);
gotoxy(38,10); scanf("%s",&barang[i].nm_brg);
gotoxy(38,11); scanf("%d",&barang[i].jml_beli);
gotoxy(38,12); scanf("%d",&barang[i].hrg_brg);
// Menghitung total pembayaran, jumlah beli dikalikan harga barang
barang[i].jml_byr = barang[i].jml_beli * barang[i].hrg_brg;
gotoxy(38,13); printf("%d\n",barang[i].jml_byr);
}
getch();
return 0;
}

tampil()
{
/* Kamus Lokal */
int c;
/* Algoritma */
for (c=23; c<=79; c++)
{
gotoxy(c,4); printf("-");
gotoxy(c,6); printf("-");
}

gotoxy(23,5); printf("no");
gotoxy(28,5); printf("nama");
gotoxy(38,5); printf("alamat");
gotoxy(47,5); printf("nm.barang");
gotoxy(60,5); printf("jml");
gotoxy(65,5); printf("harga");
gotoxy(73,5); printf("total");

for (x=0; x<=i; x++)
{
d = x + 7;
gotoxy(23,d);printf("%d",barang[x].no_angg);
gotoxy(28,d);printf("%s",barang[x].nama);
gotoxy(38,d);printf("%s",barang[x].alamat);
gotoxy(47,d);printf("%s",barang[x].nm_brg);
gotoxy(60,d);printf("%d",barang[x].jml_beli);
gotoxy(65,d);printf("%d",barang[x].hrg_brg);
gotoxy(73,d);printf("%d",barang[x].jml_byr);
}

getch();
return 0;
}

urutkan()
{
/* kamus lokal */
int pil2;
/* algoritma */
while (pil2 != 3)
{
gotoxy(1,12);printf (" Berdasarkan: \n");
gotoxy(1,13);printf (" (1) No Anggota \n");
gotoxy(1,14);printf (" (2) Nama \n");
gotoxy(1,15);printf (" (3) Menu Utama \n");
gotoxy(1,17);printf (" Pilih : "); scanf ("%d",&pil2);
if (pil2==1)
insertionsort_no_angg();
else if (pil2==2)
insertionsort_nama();
else
rampung();
}

getch();
return 0;
}

insertionsort_nama()
{
/* kamus lokal */
int v,w;
/* algoritma */
for (v=0; v<=i; v++)
{
temp=barang[v];
for (w=v-1; w>=0 && strcmp(barang[w].nama,temp.nama); w--)
{
barang[w+1] = barang[w];
}
barang[w+1] = temp;
}
tampil();
getch();
return 0;
}

insertionsort_no_angg()
{
/* kamus lokal */
int t,f;
/* Algoritma */
for (t=1; t<=i; t++)
{
temp=barang[t];
for (f=t-1; f>=0 && barang[f].no_angg > temp.no_angg; f--)
{
barang[f+1] = barang[f];
}
barang[f+1] = temp;
}
tampil();
getch();
return 0;
}

selesai()
{
clrscr();
gotoxy(28,12); printf(" T E R I M A K A S I H ");
return 0;
}

rampung()
{ return 0; }

garis()
{
/* Kamus Lokal */
int a,b;
/* Algoritma */
for (b=4; b<=25; b++)
{ gotoxy(20,b);printf("|"); }
return 0;
}
-----------------> end program <--------------------------------

Wednesday, April 22, 2009

Uninstall wine for ubuntu

Mungkin bagi kamu-kamu semua hal ini sudah gak asing lagi, tetapi bagi saya sendiri hal ini sangatlah pemula. Karena memang saya sendiri masih pemula menggunakan linux ubuntu, dan sekarang mulai tertarik untuk menggunakan linux ubuntu.

Ada pertanyaan dalam benak saya :
Bagaimana yach cara meremove / uninstall program wine di linux ubuntu ?

Setelah cari-cari sana sini, alhamdulillah ketemu juga, dan cukup simple caranya

=> sudo apt-get remove wine