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 :
