Tham gia Node.js MySQL
Tham gia hai hoặc nhiều bảng
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 liên quan giữa chúng, bằng cách sử dụng câu lệnh JOIN.
Hãy xem xét bạn có bảng "người dùng" và bảng "sản phẩm":
người dùng
[
{ 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:}
]
các sản phẩm
[
{ 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 trường favorite_product
của người dùng và trường id
của sản phẩm.
Ví dụ
Chọn các bản ghi khớp với cả hai bảng:
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);
});
});
Chạy ví dụ »Lưu ý: Bạn có thể sử dụng INNER JOIN thay vì JOIN. Cả hai đều sẽ cho bạn kết quả như nhau.
Lưu mã ở trên vào một tệp có tên "demo_db_join.js" và chạy tệp:
Chạy "demo_db_join.js"
C:\Users\ Your Name >node demo_db_join.js
Điều này sẽ cho bạn kết quả này:
[
{ 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ỉ những bản ghi khớp trong cả hai bảng mới được trả về.
Chỗ nối bên trái
Nếu bạn muốn trả về tất cả người dùng, bất kể họ có sản phẩm yêu thích hay không, hãy sử dụng câu lệnh LEFT JOIN:
Ví dụ
Chọn tất cả người dùng và sản phẩm yêu thích của họ:
SELECT users.name AS user,
products.name AS favorite
FROM users
LEFT
JOIN products ON users.favorite_product = products.id
Chạy ví dụ »Điều này sẽ cho bạn kết quả này:
[
{ user: 'John', favorite:
'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{
user: 'Amy', favorite: 'Tasty Lemons' },
{
user: 'Hannah', favorite: null },
{ user: 'Michael', favorite: null }
]
Tham gia ngay
Nếu bạn muốn trả lại tất cả các sản phẩm và những người dùng yêu thích chúng, ngay cả khi không có người dùng nào yêu thích chúng, hãy sử dụng câu lệnh RIGHT JOIN:
Ví dụ
Chọn tất cả các sản phẩm và người dùng yêu thích chúng:
SELECT users.name AS user,
products.name AS favorite
FROM users
RIGHT
JOIN products ON users.favorite_product = products.id
Chạy ví dụ »Điều này sẽ cho bạn kết quả này:
[
{ 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 không có sản phẩm yêu thích sẽ không được đưa vào kết quả.