Thursday, 23 May 2013

UPDATE From SELECT menggunakan JOIN in UPDATE Statement - SQL Server

Update from Select Statement adalah salah satu cara yang paling paling sering ditanyakan. Tidak semua orang tahu tentang bagaimana menggunakan beberapa tabel dengan bantuan klausa JOIN di dalam UPDATE.

Lihatlah contoh berikut. Ada dua table yaitu Tabel 1 dan Tabel 2.

Table 1
CREATE TABLE Table1 (Col1 INT, Col2 INT, Col3 VARCHAR(100))
INSERT INTO Table1 (Col1, Col2, Col3) 
SELECT 1, 11, 'First'
UNION ALL 
SELECT 11, 12, 'Second'
UNION ALL 
SELECT 21, 13, 'Third' 
UNION ALL SELECT 31, 14, 'Fourth' 
GO

Table 2 
CREATE TABLE Table2 (Col1 INT, Col2 INT, Col3 VARCHAR(100)) 
INSERT INTO Table2 (Col1, Col2, Col3) 
SELECT 1, 21, 'Two-One' 
UNION ALL 
SELECT 11, 22, 'Two-Two' 
UNION ALL 
SELECT 21, 23, 'Two-Three' 
UNION ALL 
SELECT 31, 24, 'Two-Four' 
GO

Untuk memilih dan menampilkan tabel.
SELECT * 
FROM Table1 
SELECT * 
FROM Table2 
GO

updatejoin1

Sekarang mari kita lihat gambar diatas. Pada Table 2 kita memiliki dua baris di mana Col1 adalah 21 dan 31. Kita akan memperbarui nilai dari Table 2 ke Table 1 untuk baris di mana Col1 adalah 21 dan 31. Selain itu, kita akan memperbarui nilai-nilai Col2 dan col3.

Yang paling mudah dan sederhana adalah dengan cara menggunakan JOIN pada UPDATE dan menggunakan beberapa tabel dalam pernyataan UPDATE tersebut, kemudian lakukan perintah statement yang dibuat dengan perintah berikut:

UPDATE Table1 
SET Col2 = t2.Col2, 
Col3 = t2.Col3 FROM Table1 t1 
INNER JOIN Table2 t2 ON t1.Col1 = t2.Col1 
WHERE t1.Col1 IN (21, 31)
GO

Mari kita pilih data dari tabel yang telah digabungkan dan diganti nilain-nilainya dengan perintah berikut:
SELECT * 
FROM Table1 
SELECT * 
FROM Table2 
GO

updatejoin2

Seperti yang Anda lihat bahwa menggunakan JOIN di dalam pernyataan UPDATE akan membuat kita memperbarui data dalam satu tabel dari tabel lain dengan sangat mudah. Selain itu Anda dapat menggunakan statement MERGE untuk melakukan hal yang sama, namun saya pribadi lebih suka metode di atas.

0 comments:

Post a Comment