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