JNet99

Enjoy Saja Bro

Full Join dan Cross Join dalam SQL

13-iconMelanjutkan artikel saya yang berjudul Konsep Himpunan Dalam SQL , disini saya akan melengkapi 2 (perintah) lagi yaitu Full Join dan Cross Join. Perintah ini merupakan salah satu bentuk kombinasi dari beberapa kombinasi dalam merelasikan 2 (tabel) atau lebih. Memang perintah ini sangat jarang dipakai, tapi tidak ada salahnya untuk saya tuliskan disini karena saya sendiri sebenarnya sudah lupa dengan dua perintah ini. Untung ada yang mengingatkan saya lewat komentar di artikel yang telah saya sebutkan di atas. Jadi walaupun nantinya saya lupa lagi masih bisa dibaca di artikel ini, dan mungkin ada pengunjung yang lebih bisa memanfaatkannya.

Full Join :

Apabila Anda punya 2 (dua) table yaitu tabel A dan tabel B.

Tabel A : Berisi nama-nama person.

Kode Nama Kota
1001 Udin Surabaya
1002 Imul Jakarta
1003 Dede Jakarta
1004 Vina Bandung
1005 Tutik Semarang

Tabel B : Berisi daftar kota.

Kota Area
Ambon 0911
Surabaya 031
Jakarta 021
Yogyakarta 0274
Solo 0271

Dengan perintah Full Join maka gabungan dari dua tabel tersebut seluruhnya akan ditampilkan, disini kita contohkan field “kota” sebagai kunci penghubung.

SELECT a.kode, a.nama,
a.kota as kota_person, b.kota as daft_kota FROM tabelA a FULL JOIN tabelB b on a.kota=b.kota
ORDER BY kode

Maka tabel yang dihasilkan :

Kode Nama Kota_Person Daft_Kota Area
null null null Ambon 0911
null null null Yogyakarta 0274
null null null Solo 0271
1001 Udin Surabaya Surabaya 031
1002 Imul Jakarta Jakarta 021
1003 Dede Jakarta Jakarta 021
1004 Vina Bandung null null
1005 Tutik Semarang null null

Hasil tabel tersebut terlihat, untuk kolom kota_person = “Bandung” dan “Semarang” mempunyai daft_kota dan Area yang bernilai “null” (tidak punya nilai). Sebab dua kota tersebut tidak terdaftar di tabel B.

Begitu pula dengan kolom Daft_kota = “Ambon”, “Yogyakarta”, “Solo” mempunyai Kode, nama, kota_person = “null”. Penyebabnya kota-kota tersebut terdaftar didalam tabel B tapi tidak ada dalam tabel A.

Jadi semua sudah jelas bagaimana cara menggunakan FULL JOIN.

CROSS JOIN :

Untuk memahami perintah ini saya berikan 2 (dua) tabel yang sederhana saja sebagai contoh.

table3

Dari tabel diatas cuma saya ringkas saja garis relasinya, sebenarnya diteruskan sampai kode A = ‘1005′.

Jadi himpunan yang terbentuk dari CROSS JOIN di atas

hasil := {‘1001A’, ‘1001B’, ‘1001C’, ‘1002A’, ‘1002B’, ‘1002C’, …, ‘1005B’, ‘1005C’}.

Bentuk perintahnya sebagai berikut :

SELECT kodeA, kodeB FROM tabelA
CROSS JOIN tabelB ORDER BY KodeA

Tabel yang dihasilkan :

KodeA KodeB
1001 A
1001 B
1001 C
1002 A
1002 B
1002 C
1003 A
1003 B
1003 C
1004 A
1004 B
1004 C
1005 A
1005 B
1005 C

Demikian penjelasan mengenai FULL JOIN dan CROSS JOIN mudah-mudah bermanfaat bagi pembaca.

Artikel lainnya

Filed under: SQL, Tips & Tricks , , , ,

6 Responses

  1. restu mengatakan:

    makasih banget yah artikelnya……….
    bener-bener bantu nieh,thanks
    bikinin artikel koneksi ke vb dunks…….

  2. JACK mengatakan:

    MINTA PENGERTIAN MASING-MASING JOIN DONK?????

    jawab : Full join adalah suatu bentuk relasi antara dua tabel atau lebih, dimana hasil dari relasi tersebut merupakan penggabungan isi seluruh record dari tabel-tabel yang direlasikan. Apabila tabel pertama relasinya tidak ketemu dengan tabel yang kedua maka akan muncul baris yang beberapa kolomnya bernilai “null”. Tetapi kalau record tersebut ada relasinya akan dihasil tabel standard (base table)
    Cross Join : suatu bentuk relasi dari dua table untuk menghasilkan tabel Cartesian. Yaitu setiap baris pada tabel pertama dihubungkan kesemua baris yang ada ditabel kedua. Contohnya sudah ada didalam artikel

  3. Jocky Sembiring mengatakan:

    Sebelumnya salam kenal mas Jose Rizal… :)

    Setelah seharian penat dengan query yang membingungkan, akhirnya saya menemukan blog ini yang menurut saya sungguh bermanfaat (paling tidak untuk saya pribadi) dan langsung deh “Add to Favorites…” hehehe :)

    Oya mas saya mau nanya, kalo seandainya saya punya dua buah tabel katakanlah tabel A dan tabel B, dimana tabel A berisi data:

    Kode – Nama – Total
    1 – Kas – 100,000.00
    2 – Pengeluaran – 20,000.00
    3 – Pemasukan – 45,000.00

    dan tabel B berisi data:

    Kode – Nilai
    2 – 10,000.00
    2 – 7,500.00
    3 – 30,000.00
    2 – 2,500.00
    3 – 15,000.00

    Pertanyaan saya, query seperti apa yang harus saya pakai agar saya dapat menghasilkan tabel:

    Kode – Nilai – Total
    2 – 10,000.00 – 100,000.00
    2 – 7,500.00 – 100,000.00
    3 – 30,000.00 – 100,000.00
    2 – 2,500.00 – 100,000.00
    3 – 15,000.00 – 100,000.00

    dimana Kode dan Nilai diambil dari seluruh tabel B dan Total hanya diambil dari kode 1 (Kas) pada tabel A? mohon pencerahannya.

    Terima kasih.

    jawab :
    salam kenal kembali Mas Jocky, senang berkenalan dengan Anda.
    Maaf, sebenarnya saya kurang paham dengan pertanyaan Anda,
    Permasalahannya pada tabel B tidak mengandung kode 1 (kas) agar bisa direlasikan dengan tabel A.
    Solusinya pada tabel B harus ditambah satu field lagi kita beri nama saja kode_kas (kalau memang hanya untuk kas), dan kode_kas pada tabel B ini harus diisi kode 1 semua, jadi pada tabel B betuk field nya sekarang

    kode – nilai – kode_kas
    2 – 10,000.00 – 1
    2 – 7,500.00 – 1
    3 – 30,000.00 -1
    2 – 2,500.00 – 1
    3 – 15,000.00 – 1

    nah! kalau sudah begini baru bisa kita relasikan

    select kode, nilai, total from tabel_A a
    left join tabel_b b on a.kode_kas=b.kode_kas

    begitu kira-kira jawabannya

    • Jocky Sembiring mengatakan:

      ic.. jadi ngga bisa yah mas kalo pakai cross join? saya pikir bisa :) ok, thx mas.

      • Unknown mengatakan:

        Paling bisa jd na ky gini :

        Tb_A = Table A
        Tb_C = Table B

        SELECT A.kode,A.Nilai,B.Total FROM Tb_C A left JOIN Tb_A B on A.Kode = B.Kode;

        Jd na :

        Kode – Nilai – Total
        2 – 10000 – 20000
        2 – 7500 – 20000
        3 – 30000 – 45000
        2 – 2500 – 20000
        3 – 15000 – 45000

  4. nda mengatakan:

    Bos…kok sintaks FULL JOINYA g bisa diterapin di mysql yah???

    pa mysql g bisa FULL JOIN????

    tapi klo INNER JOIN or LEFT JOIN or RIGHT JOIN bisa di mysql…

    tuh gimana???mohon bantuanya…

    jawab : Perintah Full Join memang hanya berlaku di SQL Server saja, untuk My SQL tidak bisa, tapi mungkin ada cara lain yaitu dengan menggunakan UNION contoh :

    SELECT a.kode, a.nama,
    a.kota as kota_person, b.kota as daft_kota FROM tabelA a LEFT JOIN tabelB b on a.kota=b.kota
    UNION
    SELECT a.kode, a.nama,
    a.kota as kota_person, b.kota as daft_kota FROM tabelA a RIGHT JOIN tabelB b on a.kota=b.kota

    Cuman dalam perintah ini tidak bisa disisipi ORDER BY.

Leave a Reply

delicious