Monday, March 19, 2007

Menampilkan record dari nomor tertentu dalam SQL Server 2000
By: pieter_edison@yahoo.com

Contoh Kasus :
Misalkan dalam suatu database anda, perusahaan anda memiliki database spare-part yang memiliki master customer ( pelanggan ).Kemudian dalam suatu kasus tertentu, anda ingin menampilkan record customer sebanyak 10 baris tetapi dengan nomor urut bukan dari 1 sampai x tertentu, tapi anda justru ingin menampilkan record pelanggan dari record 6 sampai ke 10 disebabkan data pelanggan ini memiliki kasus tertentu.

Kalau di MySQL dan Oracle dikenal dengan istilah LIMIT .

Hal ini dapat dilakukan dengan melakukan sedikit tip dan trik di SQL Server, khususnya SQL Server 2000.

Misalkan data Customer Anda adalah :

Tablename : Cust

ID CustName
01 DATA1
02 DATA2
03 DATA3
04 DATA4
05 DATA5
06 DATA6
07 DATA7
08 DATA8
09 DATA9
10 DATA10
11 DATA11
12 DATA12
13 DATA13

Anda ingin menampilkan data dari ID=05 sampai ID=11

Hal ini dapat dilakukan dengan :

Step 1 : Tampilkan dahulu data semua data sampai record ke 11

SELECT TOP 11 * FROM Cust ORDER BY [ID]

Akan menghasilkan record dari ID=1 sampai ID=11

Hasil
ID CustName
01 DATA1
02 DATA2
03 DATA3
04 DATA4
05 DATA5
06 DATA6
07 DATA7
08 DATA8
09 DATA9
10 DATA10
11 DATA11

Step 2 : Kemudian data ini dibuat alias sub quey sebagai data baru, data baru ini kita olah, dimana dari ID=1 sampai ID=11 ini, kita hanya ingin menampilkan data ID=05 sampai ID=11. Dengan kata lain kita ingin memfilter data ini sebanyak selisih 7 karena mulai dari ID=05 sampai ID=11.

Dengan query sqlnya sebagai berikut :

Syntax SQL : SELECT TOP 7 * FROM (
SELECT TOP 11 * FROM Cust ORDER BY [ID]
) A ORDER BY [ID] DESC

Dari query diatas, query Step 1 yang diatas kita simpan sebagai sub query dengan nama alias A, kemudian kita ambil 7 record dari alias table A tersebut, jangan lupa kita order dengan perintah DESC.

Akan menghasilkan record dari ID=05 sampai ID=11 dengan urutan DESC

Hasil :
ID CustName
11 DATA11
10 DATA10
09 DATA9
08 DATA8
07 DATA7
06 DATA6
05 DATA5


Step 3 : Setelah data tersebut terurut dan sesuai dengan step yang kita inginkan, selanjutnya data ini tinggal kita tampilkan kembali agar order datanya ASC dengan menggunakan sub query baru dari step 2 diatas.

Syntax SQL : SELECT * FROM
( SELECT TOP 7 * FROM (
SELECT TOP 11 * FROM Cust ORDER BY [ID]
) A ORDER BY [ID] DESC
) B ORDER BY [ID]

Akhirnya data tersebut akan terurut order sesuai dengan data yang kita minta.

Hasil :
ID CustName
05 DATA5
06 DATA6
07 DATA7
08 DATA8
09 DATA9
10 DATA10
11 DATA11


Demikian hasil yang diperoleh dan akhir dari isi tutorial ini.

Best Regards,
Pieter
Menampilkan Nomor Record tertentu dalam SQL Server 2000
By: pieter_edison@yahoo.com

Contoh Kasus :
Misalkan dalam suatu database anda, perusahaan anda memiliki database yang memiliki master table A.Kemudian dalam suatu kasus tertentu, anda ingin menampilkan record table A tersebut dengan nomor urut tertentu.

Contoh table A tersebut memiliki field : Nama dan Alamat. Dan ingin ditampilkan semua data Nama dan Alamat disertai dengan nomor urut letak data didalam table. Hal ini biasanya digunakan untuk penggunaan report atau nomor urutan grid (nomor baris grid) dalam kode program klient anda, misalkan dengan menggunakan gridview di VB.NET

Hal ini dapat dilakukan dengan melakukan sedikit tip dan trik di SQL Server, khususnya SQL Server 2000.

Misalkan data tabel A Anda adalah :

Tablename : A

Nama Alamat
Nama1 DATA1
Nama2 DATA2
Nama3 DATA3
Nama4 DATA4
Nama5 DATA5
Nama6 DATA6
Nama7 DATA7
Nama8 DATA8
Nama9 DATA9
Nama10 DATA10
Nama11 DATA11
Nama12 DATA12
Nama13 DATA13

Dan Hasil yang anda inginkan adalah sebagai berikut :

Tablename : A

Nomor Baris Nama Alamat
1 Nama1 DATA1
2 Nama2 DATA2
3 Nama3 DATA3
4 Nama4 DATA4
5 Nama5 DATA5
6 Nama6 DATA6
7 Nama7 DATA7
8 Nama8 DATA8
9 Nama9 DATA9
10 Nama10 DATA10
11 Nama11 DATA11
12 Nama12 DATA12
13 Nama13 DATA13

Hal ini dapat dilakukan dengan menggunakan 2 cara, menggunakan temporary table atau menggunakan deklarasi variable table.

Cara 1 : Menggunakan temporary table

Syntax SQL : SELECT IDENTITY(int,1,1) as [Nomor Baris], Nama, Alamat) INTO #X FROM A


Akan membuat nomor baris dari syntax IDENTITY dengan tipe int kedalam table temporary X dari table A

Selanjutnya anda tinggal menampilkan data tersebut dengan perintah :

SELECT * FROM #X

Jangan lupa untuk mendrop table temporary tersebut

DROP TABLE #X



Hasil
Nomor Baris Nama Alamat
1 Nama1 DATA1
2 Nama2 DATA2
3 Nama3 DATA3
4 Nama4 DATA4
5 Nama5 DATA5
6 Nama6 DATA6
7 Nama7 DATA7
8 Nama8 DATA8
9 Nama9 DATA9
10 Nama10 DATA10
11 Nama11 DATA11
12 Nama12 DATA12
13 Nama13 DATA13


Cara 2 : Menggunakan deklarasi table

Syntax SQL :

DECLARE @TEMP TABLE
([Nomor Baris] int identity,
Nama varchar(50),
Alamat varchar(50)
)

Kemudian anda tinggal menggunakan syntax insert table untuk mengisi data ke dalam table tersebut

Dengan query sqlnya sebagai berikut :

Syntax SQL :
INSERT INTO @TEMP
SELECT Nama, Alamat FROM A

Dan dari query diatas, anda tinggal menampilkan record dari Tabel yang sudah dideklarasi diatas yaitu @TEMP dengan menggunakan perintah sql SELECT.

Syntax SQL :
SELECT * FROM @TEMP

Hasilnya akan sama dengan cara 1 diatas.

Dari kedua cara diatas, jika anda ingin menampilkan nomor baris yang ganjil atau yang genap saja, bisa dengan menggunkan logika nomor baris dibagi 2 ( module ) yang mana sisanya = 0

Contoh untuk Bilangan Ganjil dari cara 1:

SELECT * FROM #X
WHERE [Nomor Baris] % 2 <>0

Contoh untuk Bilangan Ganjil dari cara 2:

SELECT * FROM @TEMP
WHERE [Nomor Baris] % 2 <>0

Contoh untuk Bilangan Genap dari cara 1:

SELECT * FROM #X
WHERE [Nomor Baris] % 2 =0

Contoh untuk Bilangan Genap dari cara 2:

SELECT * FROM @TEMP
WHERE [Nomor Baris] % 2 =0

Demikian hasil yang diperoleh dan akhir dari isi tutorial ini.

Best Regards,
Pieter
Export diagram dalam SQL Server 2000
By: pieter_edison@yahoo.com

Contoh Kasus :
Misalkan anda menggunakan SQL Server 2000 untuk keperluan data anda, kemudian suatu saat database anda telah aktif dimana dalam database ini, anda mendesign database juga menggunakan diagram relationship agar konsistensi dan integrasi data anda tidak kacau.

Suatu saat, anda membuat database baru yang hamper sama persis struktur table dan datanya sama seperti struktur database diatas.

Dikarenakan hal-hal tertentu, anda ingin meng-export seluruh diagram relationship yang telah anda buat tersebut ke database baru anda.

Hal ini bisa dan tidak mustahil dilakukan di SQL Server 2000.

Triknya sebagai berikut :

1. Pilih All Task, export data di nama database anda.
2. Masukkan data source dan destination anda terlebih dahulu
3. Pada pilihan Specifiy Table or Copy Query, pilih use a query to specify the data transfer
4. di Query statement, anda ketikkan kode berikut :
SELECT * FROM dtproperties
5. di pilihan Select Source Tables and Views rubahlah nama Result di destination column anda menjadi dtproperties
6. Kemudian secara otomatis diagram dari database pertama anda akan dicopy ke database baru anda.

Demikian hasil yang diperoleh dan akhir dari isi tutorial ini.

Best Regards,
Pieter
Order By didalam view dan function dalam SQL Server 2000
By: pieter_edison@yahoo.com

Contoh Kasus :
Misalkan anda menggunakan SQL Server 2000 untuk keperluan data anda, kemudian
Didalam database anda terdapat suatu table A dan table B dimana field ID di Tabel A tersebut relationship dengan field IDCol di TabelB

Tabel A tersebut terdiri dari Field : ID, Nama

Tabel B tersebut terdiri dari Field : IDCol, NamaEx

Suatu saat, anda disuruh untuk mendesign dan menarik informasi dari kedua table tersebut ( Tabel A dan table B) tersebut dengan pengurutan berdasarkan Field NamaEx dari Tabel B dimana anda menggunakan view atau function didalam kode sql anda.

CREATE VIEW GABUNG
AS
SELECT A.ID, A.Nama, B.IDCol, B.NamaEx FROM A A INNER JOIN B B
ON A.ID=B.IDCol
ORDER BY B.NamaEx

Atau bisa juga anda menggunakan function dimana function anda mengembalikan table.

Jika anda menggunakan syntax diatas dan anda execute query hasil tersebut akan menampilkan informasi pesan kesalahan :

The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.

Hal ini disebabkan karena syntax ORDER BY tidak diperbolehkan didalam penggunaan function ataupun view.

Terus mungkin anda bisa mengakalinya dengan meng-order data tersebut di kode client anda..

Sebenarnya syntax ORDER BY ini bisa digunakan dalam VIEW ataupun FUNCTION,
Tetapi sekali lagi kita menggunakan trik tertentu.

Trik tersebut kita tambahkan perintah TOP 100 PERCENT saja, maka otomatis VIEW OR FUNCTION anda akan diorder.

Coba anda ganti view diatas dengan kode sebagai berikut :

CREATE VIEW GABUNG
AS
SELECT TOP 100 PERCENT A.ID, A.Nama, B.IDCol, B.NamaEx FROM A A INNER JOIN B B
ON A.ID=B.IDCol
ORDER BY B.NamaEx

Maka syntax sql anda akan dinyatakan benar, dan hasil yang diperoleh data anda akan diorder sesuai dengan permintaan anda tanpa ada kesalahan sintaks lagi.


Demikian hasil yang diperoleh dan akhir dari isi tutorial ini.

Best Regards,
Pieter

Menghapus nilai null dalam SQL Server 2000

By: pieter_edison@yahoo.com

Contoh Kasus :

Misalkan anda menggunakan SQL Server 2000 untuk keperluan data anda, kemudian

Didalam database anda terdapat suatu table A

Tabel A tersebut terdiri dari Field : ID, Nama

Yang isinya terdiri dari

ID Nama

01 NULL

02 B

03 A

04 D

05 NULL

06 F

Kemudian anda di suruh untuk menampilkan data yang diorder berdasarkan field Nama dimana data NULL ingin anda letakkan di baris paling bawah

Jika anda menggunakan syntax seperti berikut :

Select * from A

Order by Nama

Akan menghasilkan data :

ID Nama

01 NULL

05 NULL

03 A

02 B

04 D

06 F

Terdapat nilai null di field nama.

Agar nilai NULL diletakkan di baris paling bawah ketika menampilkan data, maka anda harus mengganti syntax sql anda diatas dengan trik sebagai berikut :

Select * from A

Order by CASE

WHEN Nama IS NULL THEN 1

ELSE O

END

Maka akan menghasilkan data dengan nilai NULL diabaikan.

ID Nama

03 A

02 B

04 D

06 F

01 NULL

05 NULL

Demikian hasil yang diperoleh dan akhir dari isi tutorial ini.

Best Regards,

Pieter