Node.js: JOIN


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Bạn có thể kết hợp các hàng từ hai hoặc nhiều bảng dựa trên cột có liên quan giữa chúng bằng cách sử dụng câu lệnh JOIN.

Giả sử bạn có hai bảng là "users" và một bảng "products":

Bảng 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:}
]

Bảng products:

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

Hai bảng này có thể được kết hợp bằng cách sử dụng cột favorite_product của bảng users và cột id của bảng sản phẩm.

Ví dụ:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "nodejs_db"
});

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

Lưu ý: Bạn có thể sử dụng INNER JOIN thay cho JOIN. Cả hai đều sẽ cung cấp cho bạn cùng một kết quả.

Lưu đoạn mã trên vào một tệp có tên "demo_db_join.js" và chạy tệp:

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

Kết quả:

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

Như bạn có thể thấy từ kết quả ở trên, chỉ các bản ghi có khớp trong cả hai bảng mới được trả về.

LEFT JOIN

Nếu ta muốn lấy tất cả người dùng (users), bất kể họ có sản phẩm yêu thích hay không thì ta sử dụng câu lệnh LEFT JOIN:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "nodejs_db"
});

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

Kết quả:

[
  { 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

Nếu ta muốn lấy tất cả các sản phẩm và những người dùng yêu thích sản phẩm ngay cả khi không có người dùng nào coi chúng là sản phẩm yêu thích, thì ta sử dụng câu lệnh RIGHT JOIN:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "nodejs_db"
});

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

Kết quả:

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

Lưu ý: Hannah và Michael là những người không yêu thích sản phẩm nào, nên không có mặt trong kết quả.

» Tiếp: LIMIT
« Trước: DELETE
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!