Share :![]()
![]()
Seperti yang sudah-sudah, pada kesempatan ini Bang Agung mau kasIh tips untuk Select TOP 1 dengan hasil join sama dengan Left Join dengan menggunakan SQL Server.
Skenario ini sebenernya tidak selalu muncul/sering dipakai ketika saya membuat sebuah Query, tetapi beberapa waktu lalu saya memiliki persyaratan untuk melakukan penggabungan table melalui hubungan satu ke banyak, tetapi hanya mendapatkan 1 hasil dari tabel yang saya gabung. Pada skenario semacam ini sering dapat diselesaikan dengan menggunakan Sub Query, tetapi dalam kasus ini saya membutuhkan akses ke beberapa kolom sehingga Sub Query tidak akan saya pakai dalam kasus ini.
Contoh Kasus
Bayangkan Anda memiliki tb_pelanggan dan tb_alamat dari setiap tb_pelanggan dapat memiliki beberapa alamat.
tb_pelanggan
pelangganID | FirtsName | LastName |
---|---|---|
BA001 | Bang | Agung |
tb_alamat
alamatID | pelangganID | kota | kecamatan | kelurahan | createdAt |
---|---|---|---|---|---|
0001 | BA001 | Jakarta | Disana | Disini | 12-12-2020 |
0002 | BA001 | Jakarta | Disana | Disini | 13-12-2020 |
0003 | BA001 | Jakarta | Disana | Disini | 14-12-2020 |
0004 | BA001 | Jakarta | Disana | Disini | 15-12-2020 |
Tugasnya adalah untuk mendapatkan daftar pelanggan dan alamat terbaru mereka.
SOLUSI
Dengan menggunakan OUTER APPLY kita dapat bergabung dengan 2 tabel dan mendapatkan alamat terbaru seperti ini:
SELECT
a.*,
c.*
FROM tb_pelanggan a
OUTER APPLY
(SELECT TOP 1 *
FROM tb_alamat b
WHERE b.customerID = a.customerID
ORDER BY b.createdAt DESC
) AS c
Demikian cara untuk mendapatkan Select TOP 1 dengan menggunakan OUTER APPLY, Semoga artikel yang Bang Agung Tulis ini bermanfaat. Terimakasih sudah berkunjung.