Perbedaan Left Join dan Left Outer Join

Mungkin ada yang belum tahu, bahwa kata kunci OUTER sebenarnya adalah bersifat opsional. Jadi, baik ditulis atau tidak, hasilnya tetap sama. Pada dasarnya, semua bagian dari kata kunci JOIN adalah opsional. Jika hanya ditulis JOIN saja tanpa embel-embel LEFT/RIGHT, FULL, atau CROSS, default-nya adalah INNER. Contoh di bawah ini adalah sebuah query dengan kata kunci JOIN yang artinya sama dengan INNER JOIN.

SELECT * FROM A JOIN B
ON A.X = B.Y

Berikut ini adalah daftar query beserta persamaannya.

A LEFT JOIN B = A LEFT OUTER JOIN B
A RIGHT JOIN B = A RIGHT OUTER JOIN B
A FULL JOIN B = A FULL OUTER JOIN B
A INNER JOIN B = A JOIN B
A, B = A CROSS JOIN B

Pada baris terakhir adalah syntax lama yang sudah mulai ditinggalkan tapi masih didukung oleh banyak mesin database modern. Penggabungan dua buah table atau lebih menggunakan tanda koma (,) sebaiknya dihindari, karena dapat menimbulkan ketaksaan (ambiguitas) ketika misalnya kata kunci INNER dan OUTER digunakan secara bersamaan pada suatu query. Ketaksaan tersebut mungkin saja diinterpretasikan berbeda dari satu mesin database ke yang lainnya.

Kerugian lain dari syntax lama adalah hasilnya akan selalu bernilai CROSS JOIN jika kita lupa untuk menambahkan klausa WHERE. Pada syntax baru yang menggunakan kata kunci JOIN, hal ini tidak mungkin terjadi karena akan menimbulkan kegagalan pada saat pemeriksaan syntax sebelum dijalankan oleh mesin database.

Kesimpulan dari catatan ini adalah:
1. Jika hanya ditulis JOIN, artinya adalah INNER JOIN.
2. Kata kunci OUTER, harus didahului oleh LEFT/RIGHT/FULL. Tidak bisa hanya ditulis OUTER JOIN.
3. Kata kunci OUTER bersifat opsional, jadi bisa ditulis LEFT JOIN atau RIGHT JOIN atau FULL JOIN saja.
4. CROSS JOIN berarti kita membuat daftar dari table pertama dikali dengan daftar dari table kedua. Akan menghasilkan semua kemungkinan dari kedua table tersebut (Cartesian product).

Jika ingin lebih jelas mengenai masing-masing kata kunci JOIN, bisa membaca pada catatan lalu, yang menganalogikan kata kunci JOIN dengan Diagram Venn.

About Sibudi

Ubuntu user | Loves books | Blogger | Web Developer | Learn PHP, JavaScript, Ruby & Python the hard way

24. November 2012 by Sibudi
Categories: SQL | Tags: , , | 1 comment

One Comment

  1. Thankss, helpfull :))

Leave a Reply

Required fields are marked *