|
Halo pembaca semuanya. Apa kabar? Kali ini kita bertemu kembali
dalam tips SQL Server. Masih seputar hal yang sederhana saja, yaitu
bagaimana caranya menampilkan row (baris) dari row yang ke m sampai
n misalnya. Masih belum jelas juga? Begini, misalnya Anda ingin
menampilkan 5 (lima) row teratas pada tabel yang Anda inginkan, maka
Anda bisa menggunakan klausa TOP pada SQL Server. Contohnya adalah
SELECT TOP 5 * from <table_name>. Bagaimana jika ingin menampilkan 5
row pada kelompok berikutnya? Ini akan menjadikan kasus tersebut
jadi lebih sulit sedikit. Tapi Anda tidak usah khawatir, karena Anda
bisa menggunakan perintah standar ANSI SQL untuk melakukannya.
Mari kita demonstrasikan teknik tersebut. Penulis di sini
menggunakan SQL Server 2000. Pertama-tama coba buat tabel seperti
berikut ini.
create table
penulis (kode char(3), nama varchar(30))
Perintah di atas akan membuat tabel dengan nama 'penulis'.
Kemudian mari kita isi tabel tersebut dengan beberapa data.
insert into
penulis (kode, nama) values ('001','Sony AK');
insert into penulis (kode, nama) values ('002','Agus K');
insert into penulis (kode, nama) values ('003','Risman A');
insert into penulis (kode, nama) values ('004','Norman S');
insert into penulis (kode, nama) values ('005','Kiki N');
insert into penulis (kode, nama) values ('006','Legowo B');
insert into penulis (kode, nama) values ('007','Tony C');
insert into penulis (kode, nama) values ('008','Goenawan L');
insert into penulis (kode, nama) values ('009','Adi JR');
insert into penulis (kode, nama) values ('010','Frans T');
insert into penulis (kode, nama) values ('011','Onno WP');
insert into penulis (kode, nama) values ('012','Endy M');
Sekarang tabel 'penulis' di atas akan berisi 12 data, yaitu kode
penulis dan nama penulis. Jika sekarang kita ingin menampilkan
daftar 5 penulis pertama maka Anda bisa menuliskan perintah berikut
ini.
select top 5 *
from penulis
Untuk menampilkan 5 penulis pada kelompok berikutnya -- penulis
ke 6 - 10 -- maka Anda bisa mengetikkan script SQL seperti berikut
ini.
SELECT
*
FROM
penulis AS A1
WHERE
(
SELECT
COUNT(*)
FROM
penulis AS A2
WHERE
A2.kode <= A1.kode
) BETWEEN 6 AND 10
ORDER BY
kode
Hasilnya akan nampak seperti berikut ini.

Sebagai catatan, perintah di atas dari sisi performa masih kurang
bagus. Mengapa demikian? Perintah tersebut akan melakukan scan pada
tabel 'penulis' sebanyak jumlah data yang ada di dalamnya. Selain
itu perintah ini membutuhkan persyaratan kolom yang Anda ORDER BY --
dalam hal ini kolom 'kode' -- haruslah unik.
Kita bisa meningkatkan performa query dengan cara membagi solusi
di atas menjadi dua langkah. Pertama, kita letakkan data row pada
tabel 'penulis' ke dalam tabel sementara (temporary table) bersama
dengan posisi ordinal berdasarkan kolom 'kode' pada tabel tersebut.
Kita bisa melakukan hal tersebut dengan menggunakan function
IDENTITY(). Mari kita lohat contohnya berikut ini.
SELECT
IDENTITY (int, 1, 1) AS rownum,
*
INTO
#tmppenulis
FROM
penulis
ORDER BY
kode
Setelah itu kita bisa melakukan query sederhana untuk menampilkan
daftar penulis dari yang ke 6 sampai 10 dengan mengetikkan script
seperti berikut ini.
SELECT
*
FROM
#tmppenulis
WHERE
rownum BETWEEN 6 AND 10
Referensi
- Itzik Ben-Gan and Tom Moreau, Advanced Transact-SQL for
SQL Server 2000, 2000, Apress.
Demikian tulisan singkat mengenai tips menampilkan row m ke n
pada SQL Server. Semoga berguna bagi Anda
semuanya. Jika ada komentar atau saran bisa dikirimkan melalui
ariesa.rahardjo@gmail.com. Jika Anda memiliki ide atau tips
menarik, silakan saja tulis dan kirimkan kepada kami melalui
article@sony-ak.com. Untuk membaca tulisan menarik lainnya
silakan menuju ke situs Sony AK Knowledge Center dengan alamat di
www.sony-ak.com.
Terima kasih.
| Send
your comments or suggestions |
|
|
|