Thursday, November 29, 2012

Menghindari Duplicate Entry dengan Distinct


MySQL – Menghindari Record Kembar dengan Distinct Posted by Aa on Nov 5, 2012 in MySQL | 0 comments Berhubung ini ada pertanyaan dari salah satu teman murid bimbingan, jadinya harus nulis disini deh biar semuanya bisa membaca dan belajar :) Ehm..bingung neh mau ngasih pendahuluannya seperti apa. Biar lebih jelasnya, yuk langsung praktek aja :) Misalnya kita buat Database dan Tabel baru. Berikut log-nya:
    mysql> create database guru; use guru;
    Query OK, 1 row affected (0.02 sec)

    Database changed
    mysql> create table profilguru(
    -> id int(2) auto_increment primary key,
    -> nama varchar(50) not null,
    -> matpel varchar(30) not null
    -> );
    Query OK, 0 rows affected (0.13 sec)

    mysql> desc profilguru;
    +——–+————-+——+—–+———+—————-+
    | Field | Type | Null | Key | Default | Extra |
    +——–+————-+——+—–+———+—————-+
    | id | int(2) | NO | PRI | NULL | auto_increment |
    | nama | varchar(50) | NO | | NULL | |
    | matpel | varchar(30) | NO | | NULL | |
    +——–+————-+——+—–+———+—————-+
    3 rows in set (0.01 sec)
Oke, jadi table diatas untuk menampung profil guru di sekolah, tapi dibuat lebih simpel saja. Hanya ada kolom id, nama dan mata pelajaran yang dibawanya. Lalu, masalahnya dimana? Oh nanti dulu dunk :p Yuk kita lanjut dengan menginput record-nya. Berikut log-nya:
    mysql> insert into profilguru values(”,’Aa Ezha’,’PHP’);
    Query OK, 1 row affected, 1 warning (0.07 sec)

    mysql> insert into profilguru values(”,’Aa Ezha’,’B.Arab’);
    Query OK, 1 row affected, 1 warning (0.02 sec)

    mysql> insert into profilguru values(”,’Ana Rita Yuli’,’Kebidanan’);
    Query OK, 1 row affected, 1 warning (0.04 sec)

    mysql> insert into profilguru values(”,’Uba Ler’,’Networking’);
    Query OK, 1 row affected, 1 warning (0.03 sec)

    mysql> insert into profilguru values(”,’Deni Mikrocpu’,’Networking’);
    Query OK, 1 row affected, 1 warning (0.04 sec)

    mysql> insert into profilguru values(”,’Deni Mikrocpu’,’Visual Basic’);
    Query OK, 1 row affected, 1 warning (0.04 sec)
Oke, disana terlihat ada beberapa “guru” yang mengajar lebih dari 1 mata pelajaran. Lalu masalahnya adalah, ketika kita ingin memunculkan daftar-daftar guru yang mengajar. Berikut contohnya:
    mysql> select nama from profilguru;
    +—————+
    | nama |
    +—————+
    | Aa Ezha |
    | Aa Ezha |
    | Ana Rita Yuli |
    | Uba Ler |
    | Deni Mikrocpu |
    | Deni Mikrocpu |
    +—————+
    6 rows in set (0.00 sec)
Nah, lihat kan disana jadi namanya dobel-dobel begitu :D Padahal kita kan pengennya..1 guru ya 1kali tampil. Terus, gimana dunk menanggulangi agar recordnya tidak dobel, mengulang atau kembar? Begini neh jadinya :)
    mysql> select distinct nama from profilguru;
    +—————+
    | nama |
    +—————+
    | Aa Ezha |
    | Ana Rita Yuli |
    | Uba Ler |
    | Deni Mikrocpu |
    +—————+
    4 rows in set (0.00 sec)
Yups, hanya ditambahkan query DISTINCT saja setelah SELECT. Jadi fungsi dari query DISTINCT adalah mencegah suatu record yang sama untuk muncul lebih dari 1 kali. Terlihat jelas bedanya ketika menjalankan query SELECT tanpa DISTINCT, bukan? Ehm..mungkin sekian dulu tutorial pendeknya :) Semoga bermanfaat untuk semuanya. di colong dari http://www.aaezha.com/2012/11/mysql-menghindari-record-kembar-dengan-distinct.html