Tuesday, November 18, 2014

Mencari Record Yang Sama Pada Tabel MySQL


Untuk mencari dan menampilkan record yang sama pada tabel MySQL kita menggunakan kombinasi perintah query SELECT dan HAVING . Parameter HAVING pada perintah SELECT berarti mempunyai nilai, jadi kita memanfaatkan ini untuk menghitung record yang sama dalam satu field (COUNT).

Salah satu kegunaan dari perintah ini adalah untuk melacak data yang sama saat proses import ke database MySQL. Masalah ini biasanya terjadi saat akan menentukan primary key terhadap suatu kolom. Hal ini karena pada data yang kita import tadi ternyata ada yang sama dalam satu field dan akan jadi terjadi error saat field tersebut diset primary key.

Masalah diatas pernah saya alami saat import data aktiva perusahaan dari format CSV (ex. ms-excel) kedalam database MySQL. Karena aturan yang benar tidak mengijinkan nomor aktiva dobel maka field nomor-aktiva saya buat primary key. Dan ternyata hasilnya error pada saat import karena pada field tersebut ada data yang sama. Setelah ditelusuri ternyata proses key-in data sebelumnya pada excel tidak ada filter sehingga memungkinkan sebuah nomor aktiva diinput dua kali.

Contoh script PHP untuk mencari record yang sama

Pada contoh berikut kita akan mengambil nilai yang sama dari tabel aktiva yang memiliki dua field yaitu nomor_aktiva dan nama_aktiva berikut ini :

Nomor Aktiva Nama Aktiva
PC.001 Personal Computer Pentium 4
MJ.001 Meja Kerja
KP.001 Kursi Putar
MJ.002 Meja Kerja
PC.001 Personal Computer Pentium 4
KP.002 Kursi Putar
Dan berikut ini script PHP untuk mengetahui record yang sama :
 <?php    
 $dbHost = "localhost";    
 $dbUser = "root";    
 $dbPass = "123";    
 $dbName = "office";    

 // membuat koneksi mysql    
 $conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);    

 // mengecek koneksi mysql    
 if ($conn->connect_error) die("Koneksi Gagal: " . $conn->connect_error);    
 else echo "Koneksi Database ".$dbName." Berhasil ...<br/><br/>";     

 //membuat query membaca record dari tabel User     
 $query="SELECT nomor_aktiva, COUNT( * ) AS jumlah FROM  `aktiva` 
GROUP BY nomor_aktiva
HAVING COUNT(  `nomor_aktiva` ) >1 ;";     

 //menjalankan query     
 if ($conn->query($query)) {     
 $result=$conn->query($query);     
 } else die ("Error menjalankan query". mysqli_error());     

 //mengecek record kosong    
 if ($result->num_rows > 0) {    

  // menampilkan data   
  echo "Record yang sama= <br/>";    
  while($row = $result->fetch_assoc()) {    
    echo $row['nomor_aktiva'] ." => ".$row['jumlah']."kali <br/>";     }    
 }    
 else echo "Tidak ada Record yang sama";     

 // menutup koneksi mysql    
 $conn->close();    
 ?>   

Referensi :

2 komentar:

  1. Replies
    1. coba dicek lagi script-nya mas. contoh diatas sudah saya coba bisa kok

      Delete