Pencarian secara Row pada SQL Server

Pencarian secara Row pada SQL Server

Create: SaldiSaldi | Jumat, 05 Mei 2017 | 18:48:05 WITA | dibaca: 333

Mencari berdasarkan column adalah hal biasa yang kita lakukan bila bekerja dengan database. Kalau mencari berdasarkan row, apakah memungkinkan dilakukan pada SQL? Untuk mencari tahu, kita coba siapkan data untuk menjawab pertanyaan ini.

Table

Untuk membuatnya sederhana kita akan menggunakan 2 table.

 Table Patterns

Table ini berisi data yang akan kita gunakan untuk mencari. Dalam contoh ini kita mencari ABC, CB dan seterusnya. Pada column Pattern kita masukkan pattern yang akan kita coba cari di-table stream. Kenapa kita perlu table untuk ini? Kita akan coba juga mencari multi-pattern dalam pencariannya.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/data-patterns.png

Table Stream

Table ini berisi column Code yang akan kita cari dengan row-nya. Seperti yang terlihat, data itu akan kita coba match-kan dengan pattern yang ada diatas.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/data-patterns.png 

Tujuan Pencarian

Kita ingin mencari di-column Code, tapi dengan melihat dari row-nya. Contohnya pattern ABC (warna merah), maka harus-nya kita mendapatkan 2 dari hasil pencarian kita. Dengan data yang ada, akan di dapat column Id 2-3-4dan 6-7-8. Begitu juga dengan pattern CB (warna orange). Kita akan dapatkan column Id 4-5.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-resultset.png 

TSQL

Perhatikan query dibawah. T-SQL dibawah memiliki beberapa bagian yang menarik untuk menjawab pertanyaan diatas.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-tsql.png 

Query diatas terdiri dari 5 bagian. Kita akan melihat bagian perbagian secara detail.

Data dan Pattern

Baris 1 - 15, bagian ini dimaksudkan untuk mempersiapkan data dengan mengabungkan pattern dengan data-row (yang ada di table stream) yang dijadikan serial string. Disini kita manfaatkan fungsi FOR XML untuk membuat serial string dari column Code

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-01.png 

Index Data Stream

Baris 16 - 22, disini juga kita persiapkan data yang akan digunakan pada bagian 5 (Penjumlahan). Disini kita menggunakan fungsi ROW_NUMBER agar mempermudahkan penyatuan data.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-02.png 

Pencarian

Baris 23 - 58, inti dari query kita ini ada disini. Disini kita mencari row (yang kita sudah jadikan serial string) dengan pattern dan dari sana kita juga mendapatkan position-number dari hasil pencarian itu. Pencarian serial string ini kita lakukan dengan fungsi CHARINDEX.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-03.png 

Map Index

Baris 68 - 84, hasil dari bagian 3 (Pencarian) akan kita buat menjadi row kembali. Dengan begitu kita akan bisa men-map Index Character dengan Id yang ada di-table stream.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-04.png 

Penjumlahan

Baris 85 - 93, hasil dari bagian 4 (Map Index) akan kita gabungkan dengan data pada bagian 2 (Index Data Stream). Kita bisa menghubungkan ke 2 resultset itu dengan column No (yang didapat dari fungsi ROW_NUMBER) dan position-number (yang didapat dari fungsi CHARINDEX dan map-index). Setelah itu kita gunakan fungsi SUM untuk mendapatkan total dari column Value dari table stream.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-05.png 

Penutup

T-SQL diatas memang bisa menjadi solusi. Tapi perlu di ingat cara ini kurang optimize apa bila diterapkan pada aplikasi sebenarnya. Ada beberapa hal yang bisa dimaksimalkan tekniknya, tapi sebagai proof-of-concept bahwa kita bisa melakukan apa yang menjadi tantangan pencarian row. Jawabannya bisa dengan cara diatas.

 

SUMBER : https://www.codepolitan.com/pencarian-secara-row-sql-server-58ca886aa2a8c 



5 KOMENTAR

best essay writing service | 29 Juli 2017 || 15:43:27
" I simply want to say I am just beginner to weblog and absolutely liked youíre blog. Very likely Iím planning to bookmark your blog . You really come with amazing well written articles. Thanks a lot for revealing your web-site. "
Arsitek Jakarta | 31 Agustus 2017 || 15:34:23
" Boleh tahu min untuk pencarian row pada SQL ini biasanya diaplikasikan ke mana saja? Apakah bisa untuk website juga kah? Trims :D "
Aalok | 12 September 2017 || 10:20:04
" great efforts, good content "
Harga Mobil Honda Samarinda Terbaru 2017 | 13 September 2017 || 10:03:33
" good content "
rental mobil semarang | 14 September 2017 || 10:01:47
" nice post "



ISI KOMENTAR

NAMA

WEBSITE

KOMENTAR


Captcha Sepakbola
Apakah anda manusia?Lebih baik lagi kalau anda menyukai sepak bola
Sebutkan pemain sepak bola disamping:

Captcha Sepakbola by codingwear






  • PELATIHAN KAMPUS
  • Pelatihan Komputer (DIGITAL SCHOOL)
  • Study Tour GoTv
  • Penerimaan Calon Anggota Angkatan XX "Explore Experience With Us"
  • IT FUN