DML: SELECT dengan RIGHT (OUTER) JOIN

RIGHT JOIN atau RIGHT OUTER JOIN pada SQL adalah konsep dalam sistem manajemen database relasional (RDBMS) yang memungkinkan kita untuk menggabungkan baris dari dua atau lebih tabel berdasarkan kolom terkait di antara mereka.

Kata kunci RIGHT JOIN mengembalikan semua catatan dari tabel kanan (table2), dan catatan yang cocok dari tabel kiri (table1). Hasilnya adalah NULL pada sisi kiri ketika tidak ada padanan.

Sintaks Dasar

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
  • table1: Tabel kiri.
  • column_name(s): Kolom yang ingin kita pilih.
  • table2: Tabel kanan.
  • table1.column_name = table2.column_name: Kondisi yang menghubungkan kedua tabel.

Contoh 1

Mari kita mulai dengan contoh dasar:

Tabel “order”

order_idcustomer_idorder_date
132020-07-04 10:30:00
212020-09-13 15:45:00
322020-10-09 09:20:00
452020-12-02 18:00:00

Tabel “customer”

customer_idnamecountry
1JohnUSA
2MichaelGermany
3SarahFrance
4SallyUK

Kita dapat menemukan semua pelanggan, apakah mereka memiliki pesanan yang cocok atau tidak, menggunakan kueri berikut:

SELECT order.order_id, customer.name, customer.country
FROM order
RIGHT JOIN customer
ON order.customer_id = customer.customer_id;

Hasil kueri akan terlihat seperti ini:

order_idnamecountry
1SarahFrance
2JohnUSA
3MichaelGermany
NULLSallyUK

Kita melihat bahwa pelanggan Sally tidak memiliki pesanan yang cocok di tabel pesanan, sehingga mengembalikan NULL untuk order_id.

Contoh 2 - Bergabung dengan Lebih dari Dua Tabel

Mari pertimbangkan tabel baru yang disebut “product”:

Tabel “product”

product_idproduct_nameprice
1Apple1.00
2Banana0.50
3Cherry2.00
4Dates3.00

Untuk mendapatkan semua produk, pesanan yang dimasukkan, dan pelanggan yang membuat pesanan, kita dapat menggunakan RIGHT JOIN dua kali:

SELECT order.order_id, customer.name, product.product_name
FROM order
RIGHT JOIN customer ON order.customer_id = customer.customer_id
RIGHT JOIN product ON order.product_id = product.product_id;

Hasil kueri akan terlihat seperti ini:

order_idnameproduct_name
1SarahApple
2JohnBanana
3MichaelCherry
NULLNULLDates

Di sini, produk “Dates” tidak cocok dengan pesanan atau pelanggan apa pun, sehingga mengembalikan NULL pada bidang tersebut.

Contoh 3 - Menggunakan RIGHT JOIN dengan Klausul WHERE

Kita juga dapat menggunakan klausa RIGHT JOIN dengan klausa WHERE untuk menyaring catatan.

SELECT order.order_id, customer.name, customer.country
FROM order
RIGHT JOIN customer
ON order.customer_id = customer.customer_id
WHERE customer.country = 'USA';

Hasil kueri:

order_idnamecountry
2JohnUSA

Hasil hanya mencakup pelanggan dari USA. Pelanggan lain, atau pelanggan tanpa pesanan yang cocok, tidak termasuk dalam set hasil.

Contoh 4 - Menggunakan RIGHT JOIN dengan Fungsi Agregat

RIGHT JOIN juga dapat digunakan dengan fungsi agregat seperti COUNT(), SUM(), AVG(), dll.

Katakanlah kita ingin menghitung jumlah pesanan yang dilakukan setiap pelanggan:

SELECT customer.name, COUNT(order.order_id) as number_of_orders
FROM order
RIGHT JOIN customer
ON order.customer_id = customer.customer_id
GROUP BY customer.name;

Hasil kueri:

namenumber_of_orders
John1
Michael1
Sarah1
Sally0

Kueri ini mengelompokkan pesanan berdasarkan nama pelanggan dan menghitung jumlah pesanan yang dilakukan oleh setiap pelanggan. Sally belum membuat pesanan apa pun, sehingga NumberOfOrders adalah 0.

  1. SQL RIGHT JOIN Keyword - W3Schools
  2. RIGHT OUTER JOIN in SQL Server - Dokumen Microsoft
  3. SQL Aggregate Functions - W3Schools
  4. Pernyataan GROUP BY pada SQL - Tutorial SQL
  5. Menggunakan JOIN dalam SQL Server - Dokumen Microsoft
  6. Memfilter Data dengan Klausul WHERE di SQL Server - Tutorial SQL Server
Last updated on