Join Pada MySQL Node.js

Join dengan Dua atau Lebih Tabel

Kamu dapat menggabungkan baris dari dua atau beberapa tabel, berdasarkan kolom terkait di antara mereka, dengan menggunakan pernyataan JOIN.

Misalnya kamu memiliki tabel “user” dan tabel “products”:

pengguna

[
{ id: 1, name: ‘John’, favorite_product: 154},
{ id: 2, name: ‘Peter’, favorite_product: 154},
{ id: 3, name: ‘Amy’, favorite_product: 155},
{ id: 4, name: ‘Hannah’, favorite_product:},
{ id: 5, name: ‘Michael’, favorite_product:}
]

produk

[
{ id: 154, name: ‘Chocolate Heaven’ },
{ id: 155, name: ‘Tasty Lemons’ },
{ id: 156, name: ‘Vanilla Dreams’ }
]

Kedua tabel ini dapat digabungkan dengan menggunakan bidang pengguna  favorite_product dan bidang produk id.

Contoh

Pilih rekaman dengan kecocokan di kedua tabel:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT users.name AS user, products.name AS favorite FROM users JOIN products ON users.favorite_product = products.id";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

Catatan: kamu dapat menggunakan INNER JOIN sebagai ganti JOIN. Keduanya akan memberi kamu hasil yang sama.

Simpan kode di atas dalam file bernama “demo_db_join.js” dan jalankan file:

Jalankan “demo_db_join.js”

C:\Users\Your Name>node demo_db_join.js

Yang akan memberi kamu hasil ini:

[
{ user: ‘John’, favorite: ‘Chocolate Heaven’ },
{ user: ‘Peter’, favorite: ‘Chocolate Heaven’ },
{ user: ‘Amy’, favorite: ‘Tasty Lemons’ }
]

Seperti yang kamu lihat dari hasil di atas, hanya record dengan kecocokan di kedua tabel yang dikembalikan.

Left Join

Jika kamu ingin mengembalikan semua user, tidak peduli apakah mereka memiliki produk favorit atau tidak, gunakan pernyataan LEFT JOIN:

Contoh

Pilih semua pengguna dan produk favorit mereka:

SELECT users.name AS user,
products.name AS favorite
FROM users
LEFT JOIN products ON users.favorite_product = products.id

Yang akan memberi kamu hasil ini:

[
  { user: ‘John’, favorite: ‘Chocolate Heaven’ },
  { user: ‘Peter’, favorite: ‘Chocolate Heaven’ },
  { user: ‘Amy’, favorite: ‘Tasty Lemons’ },
  { user: ‘Hannah’, favorite: null },
  { user: ‘Michael’, favorite: null }
]

Right Join

Jika kamu ingin mengembalikan semua produk, dan pengguna yang menjadikannya favorit, meskipun tidak ada pengguna yang menjadikannya favorit, gunakan pernyataan RIGHT JOIN:

Contoh

Pilih semua produk dan pengguna yang menjadikannya favorit mereka:

SELECT users.name AS user,
products.name AS favorite
FROM users
RIGHT JOIN products ON users.favorite_product = products.id

Yang akan memberi kamu hasil ini:

[
  { user: ‘John’, favorite: ‘Chocolate Heaven’ },
  { user: ‘Peter’, favorite: ‘Chocolate Heaven’ },
  { user: ‘Amy’, favorite: ‘Tasty Lemons’ },
  { user: null, favorite: ‘Vanilla Dreams’ }
]

Catatan: Hannah dan Michael, yang tidak memiliki produk favorit, tidak termasuk dalam hasil pencarian.