Tips: SQL Statement dengan Sub Query

Artikel ini adalah sharing pengalaman penggunaan sub query database untuk mendapatkan informasi login terakhir dari user dari dua tabel.

Saya dulu punya pengalaman menarik dengan penggunaan database (MySQL dan
MS SQL) yang punya relation one to many. Misalnya Tabel User dan Tabel
History dan kita ingin (1) melihat daftar seluruh User dan kapan
mereka-mereka semua terakhir login atau (2) kita ingin mengambil data
kapan terakhir si User A
melakukan login..

Di bawah ini mungkin bisa jadi tips buat anda dengan memanfaatkan Sub
Query.

tblUser:
– fieldID –> (index)
– fieldNamaUser
– fieldPassword –>(optional)

tblHistory:
– fieldID
– fieldLastLoginTblHistory (date)

—————
MS-SQL
—————-
SELECT fieldNamaUser,
(SELECT TOP 1 fieldLastLoginTblHistory
FROM [tblHistory]
WHERE [tblHistory].fieldID =
[tblUser].fieldID
ORDER BY fieldLastLoginTblHistory DESC) AS
fieldLastLoginTblUser
FROM [tblUser]

—————-
MySQL
—————–
SELECT fieldNamaUser,
(SELECT fieldLastLoginTblHistory
FROM [tblHistory]
WHERE [tblHistory].fieldID =
[tblUser].fieldID
ORDER BY fieldLastLoginTblHistory DESC LIMIT
1) AS fieldLastLoginTblUser
FROM [tblUser]

Query ini menghasilkan 2 Field: fieldNamaUser dan fieldLastLoginTblUser.
…. ORDER BY fieldLastLoginTblHistory DESC LIMIT 1 penting untuk
membalik posisi LastRecord menjadi No 1 dan dengan statement Limit/Top
membatasi Record hanya 1 saja yang diambil dalam hal ini data yang kita
inginkan.
Sebaliknya kalau mau
mengambil FirstRecord hilangkan DESC untuk membuat tanggal paling lama
berada paling atas

nah, gimana kalau mengambil User A saja? gampang, tinggal lengkapi statement
FROM [tbl User] WHERE fieldID = ’10’;

gampang, hemat script dan hemat memory, database server side, dan lebih
cepat tentunya…

Upss.. SQL statement diatas nggak sempat dicoba loh… kalau ada yang
salah dengan
statement diatas silahkan diperbaiki…thanks.. bravo ben-pinter..

One Response to Tips: SQL Statement dengan Sub Query

  1. harry says:

    mas ogi,,saya mou tanya nih ttg optimasi query di mysql pake teknik cost based optimization,bisa g dijelasin,n kalo pengen ngeliat execution plan di mysql gimana caranya,,,trus dimana aku bisa dapetin referensi mengenai cbo…thanks

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: