Node.js MySQL Gabung


Gabung Dua atau Lebih Tabel

Anda dapat menggabungkan baris dari dua tabel atau lebih, berdasarkan kolom terkait di antara keduanya, dengan menggunakan pernyataan GABUNG.

Pertimbangkan Anda memiliki tabel "pengguna" dan tabel "produk":

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_productdan 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: Anda dapat menggunakan INNER JOIN daripada JOIN. Keduanya akan memberi Anda hasil yang sama.

Simpan kode di atas dalam file bernama "demo_db_join.js" dan jalankan file tersebut:

Jalankan "demo_db_join.js"

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

Yang akan memberi Anda hasil ini:

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

Seperti yang Anda lihat dari hasil di atas, hanya catatan dengan kecocokan di kedua tabel yang dikembalikan.


Gabung Kiri

Jika Anda ingin mengembalikan semua pengguna, 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 Anda 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 }
]

Gabung Kanan

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

Contoh

Pilih semua produk dan pengguna yang menjadikannya sebagai favorit:

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

Yang akan memberi Anda 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.