Sabtu, 15 Desember 2018

Cara Menemukan Data Pada Posisi Urutan (Insert/Default) Sebelumnya Pada Mysql/MariaDB


Sangat mudah sekali jika menemukan posisi data sebelumnya yang urutannya terurut secara Increment/Decrement. Namun bagaimana jika kita ingin menemukan posisi data yang akan diambil, sedangkan acuannya berdasarkan urutan id yang tidak berurut, artinya urutan default yang berdasarkan waktu insert.

Misal sebuah data yang ID nya tidak berurut, artinya urutannya berdasarkan waktu insert.
Nama Tabel: DataNama

ID     Nama
6        Amir
2        Rudi
3         Ana
7        Hadi
4        Fuad
1        Bagio
9        Yuli

Misal, dalam aplikasi yang kita buat terdapat fitur pencarian/menampilkan data sebelum dan sesudah berdasarkan kode ID yang sudah tercantum, dan akan ditampilkan secara satu persatu sesuai urutan (apa adanya) diatas (tidak berdasarkan Increment/Decrement).

Dalam aplikasi tesebut, misalnya sudah diketahui posisi nama adalah “Hadi” (ID=7). Saat user menekan tombol Sebelumnya maka data Nama yang diharapkan adalah “Ana” (ID=3) akan tampil. Contoh query untuk menemukannya menggunakan MariaDB/MySql:

SET @a := 0;
SET @b := 0;
SELECT ID, Nama FROM
   (SELECT @a := @a+1 AS n1, ID AS ids FROM DataNama) AS pret1,
   (SELECT @b := @b+1 AS n2, ID, Nama FROM DataNama) AS pret2
WHERE n2 = (SELECT n1 WHERE ids = 7)-1;

Semoga bermanfaat.

Tidak ada komentar:

Posting Komentar