Mungkin sahabat DJIESOFT pernah berhadapan dengan kasus 1 field_kode tapi isinya bisa mewakili isi dari beberapa table lain. Contohnya, saya mempunyai table transaksi penjualan (bukti, tanggal, customer), tapi customer disini (yang beli) bisa dari master customer, bisa dari master pegawai (pegawai-nya sendiri membeli) dan yang terakhir bisa dari master pihak ke tiga (siapapun). lihatlah relasi table yang sudah saya buat :
Nah lalu bagaimana cara mendapatkan nama_customer yang dalam hal ini isinya bisa kemungkinannya dari nama_customer, nama_pegawai atau nama_pihak3 ??? Ok caranya mudah,
1 kita harus melakukan LEFT JOIN dari table transkasi, sehingga relasinya seperti dibawah ini :kemudian untuk mencari nama_customer nya kita gunakan kondisi NULL, artinya jika NULL maka tidak ada di salah satu table tersebut dan kita lakukan pencarian ke table yang lain. Sintaknya ? cukup sederhana :
ISNULL(dbo.CUSTOMER.NAME, ISNULL(dbo.PEGAWAI.NAME, ISNULL(dbo.PIHAK3.NAME,''))) AS CUSTOMER_NAME
Artinya, pilih nama customer nya pertama cari dari table_customer, jika tidak ada cek dari table pegawai, jika tidak ada cek dari table pihak3, jika tidak ada di ketiga table itu terakhir maka set nama customernya = kosong/blank.
Ini query lengkapnya :
SELECT dbo.TRANSAKSI_H.BUKTI, dbo.TRANSAKSI_H.TANGGAL, dbo.TRANSAKSI_H.CUSTOMER,
ISNULL(dbo.CUSTOMER.NAME, ISNULL(dbo.PEGAWAI.NAME, ISNULL(dbo.PIHAK3.NAME,''))) AS CUSTOMER_NAME
FROM dbo.TRANSAKSI_H
LEFT OUTER JOIN dbo.CUSTOMER ON dbo.CUSTOMER.CUSTOMER = dbo.TRANSAKSI_H.CUSTOMER
LEFT OUTER JOIN dbo.PIHAK3 ON dbo.TRANSAKSI_H.CUSTOMER = dbo.PIHAK3.PIHAK3
LEFT OUTER JOIN dbo.PEGAWAI ON dbo.TRANSAKSI_H.CUSTOMER = dbo.PEGAWAI.PEGAWAI
OK, semoga bermanfaat untuk kasus yang serupa atau mirip dengan contoh diatas. GoodLuck !!!
Tags:
cara membuat relasi table, relationship table maker, how to join table, t-sql tutorial
0 komentar:
Posting Komentar