NTM Solutions

Thứ Bảy, 1 tháng 8, 2020

KHÓA HỌC NODEJS MYSQL-BÀI 12-CÂU LỆNH JOIN

Xem mục lục lập trình NodeJS

01-Nối 02 hay nhiều bảng

Bạn có thể nối các dòng tin từ 02 hay nhiều bảng, dựa trên các cột liên quan giữa chúng bằng câu lệnh JOIN

Giả sử ta có 01 bảng tên “users” và 01 bảng tên “products

Users
[
  { 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:}
]

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

02 bảng này có thể nối với nhau thông qua trường favorite products của bảng users và trường id của  bảng products.

Ví dụ: chọn các dòng tin khớp cả 02 bảng

var mysql = require('mysql');

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

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);
  });
});

Ghi chú: bạn có thể dùng INNER JOIN thay vì JOIN. Cả 02 đều cho ra kết quả như nhau.

Lưu đoạn mã trên thành tập tin “demo_db_join.js” và chạy nó.

D:/NODE/node demo_db_join.js

Kết quả trả ra CMD sẽ là:

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


02-Left Join

Nếu bạn muốn trả về tất cả users, không quan trọng là có favorite product hay không, dùng câu lệnh LEFT JOIN

Ví dụ: chọn tất cả users và giá trị favorite product của chúng

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

Kết quả trả ra CMD sẽ là:

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

03-Right Join

Nếu bạn muốn trả về tất cả products, và các users có favorite, hoặc ngay cả các users không có favorite => dùng câu lệnh RIGHT JOIN

Ví dụ:

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

Kết quả trả ra CMD sẽ là:

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

Ghi chú: HannahMichael, không có favorite product=> không đưa vào kết quả trả về.

Nếu vẫn chưa rõ các bạn xem thêm video clip sau:

Xem mục lục lập trình NodeJS

By #drM

Không có nhận xét nào:

Đăng nhận xét

Facebook Youtube RSS