Relax - Free to Play - Nature - Caffein Addict
SQL SERVER – SELECTING TOP 1 IN A LEFT JOIN WITH OUTER APPLY
Posted at 15 May 2020


Share : Share this page on Facebook Share this page on Twitter

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.


Artikel Lainnya