Monday, January 9, 2012

Membuat Limit di SQL SERVER

Sewaktu mengunakan database MySQL kita sudah terbiasa dengan yang namanya LIMIT terutama jika kita ingin mengabungkan atara MySQL dan PHP. Kita sering mengunakannya untuk pengunaan PAGING di halaman web.

- Cara kerja LIMIT
Misalkan kita mempunya 10 rekord (tuple) dalam sebuah tabel (relation) maka jika kita ingin mengambil dari baris 2 sebanyak 3 record bisa mengunakan perintah seperti ini:

select * from tabelku order by field1 limit 2,3

sintax diatas akan mengambil data mulai dari (baris)tuple ke 2 sampai baris ke 5.

Perintah LIMIT tidak ada di database SQLSERVER. Karena perintah ini merupakan bukan standard dari Sintax SQL. Lalu bagaimana cara membuat LIMIT di SQL SERVER, tentu bisa kita bisa mengunakan perintah ROW_NUMBER (memang terlihat tidak efisian seperti jika kita mengunakan LIMIT di MYSQL.

Begini perintahnya.

SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY field1) as row FROM tabelku
) as a WHERE row >2 and row <= 3


sintax diatas jika di jalankan maka hasilnya sama dengan sintax LIMIT di MySQL.

Penjelasan dari sintax diatas:
- kita memberikan nomor identitas ke baris tabelku dengan perintah
SELECT *, ROW_NUMBER() OVER (ORDER BY field1) as row FROM tabelku
maka akan ditambahkan 1 kolom, dengan nama row yang beriisi posisi dari baris(tuple).
misal ada 10 record, maka akan diberi baris 1,2,3..10 diurutkan berdasarkan field1
- kemudan setelah itu di buat subQuery dari sintax yang dibuat sebelumnya dengan perintah
select * from(
..........
) as a WHERE row >2 and row <= 3


dan akhirnya kita bisa menampilkan data sesuai dengan yang kita perlukan :)

No comments:

Post a Comment