Mengatasi Full join dengan Union

Pada permasalahan kali ini saya berbagi pengalaman yang sering saya hadapi. ketika kita ingin mencari data, dimana kita ingin 2 tabel dengan data² yang saling berkaitan

misal:
Tabel 1 dgn nama: "tbl_kota"
id_kota
nama_kota
id_propinsi
101
surabaya
1
102
gresik
1
103
kebumen
2
104
semarang
2
105
jogjakarta
3
106
bogor
4
107
banten
5


Tabel 2  dgn nama "tbl_propinsi"

id_prop
nama_prop
1
jawa timur
2
jawa tengah
4
jawa barat
7
jakarta
8
sumatera utara

kita ingin mengetahui pada tabel 1 yang tidak ada nilainya dan tabel 2 yang tidak berkaitan dengan tabel pertama, sehingga kita dapat mengetahui nilai yang null, dan ini bisa digunakan jika kita ingin cross cek data.
pada tabel diatas kita punya 2 tabel dengan struktur yang sama bagaimana kita ingin mengetahui jika tabel 1 tidak sama dengan tabel 2. dan bisa kita relasikan yaitu "id_propinsi" di tabel 1 dan "id_prop" di tabel 2.
pada suatu kasus diatas kita cross cek dua tabel tersebut dengan mengginakan query "full join". begini skrip code-nya:
select a.*,b.* from tbl_kota a full join tbl_propinsi b on a.id_propinsi = b.id_prop

saya pikir cara ini akan berhasil., ternyata di beberapa SQL server tidak bisa mengeksekusi query diatas,
maka saya coba dengan query union seperti ini :

select *
from 
(
select a.*,b.* from tbl_kota a left join tbl_propinsi b on a.id_propinsi = b.id_prop
Union
select a.*,b.* from tbl_kota a right join tbl_propinsi b on a.id_propinsi = b.id_prop
) hasil

dari query diatas maka dihasilkan data seperti ini:

id_kota
nama_kota
id_propinsi
id_prop
nama_prop
101
surabaya
1
1
jawa timur
102
gresik
1
1
jawa timur
103
kebumen
2
2
jawa barat
104
semarang
2
2
jawa barat
105
jogjakarta
3
null
null
106
bogor
4
4
jawa barat
107
banten
5
null
null
null
null
null
7
jakarta
null
null
null
8
sumatera utara


maka kita akan menemukan data yang kita inginkan yang bernilai null adalah data yang kosong..



Semoga Membantu Kawan...!!

Tidak ada komentar:

Posting Komentar