Node.js MySQL Sluit aan
Sluit aan by twee of meer tafels
Jy kan rye van twee of meer tabelle kombineer, gebaseer op 'n verwante kolom tussen hulle, deur 'n JOIN-stelling te gebruik.
Oorweeg jy het 'n "gebruikers"-tabel en 'n "produkte"-tabel:
gebruikers
[
{ 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:}
]
produkte
[
{ id: 154, name:
'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{
id: 156, name: 'Vanilla Dreams' }
]
Hierdie twee tabelle kan gekombineer word deur gebruikers se favorite_product
veld en produkte se
id
veld te gebruik.
Voorbeeld
Kies rekords met 'n passing in beide tabelle:
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);
});
});
Let wel: Jy kan INNER JOIN in plaas van JOIN gebruik. Hulle sal albei vir jou dieselfde resultaat gee.
Stoor die kode hierbo in 'n lêer genaamd "demo_db_join.js" en hardloop die lêer:
Begin "demo_db_join.js"
C:\Users\Your Name>node demo_db_join.js
Wat vir jou hierdie resultaat sal gee:
[
{ user: 'John', favorite:
'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{
user: 'Amy', favorite: 'Tasty Lemons' }
]
Soos u uit die resultaat hierbo kan sien, word slegs die rekords met 'n passing in beide tabelle teruggestuur.
Links Sluit aan
As jy alle gebruikers wil terugstuur , maak nie saak of hulle 'n gunstelingproduk het of nie, gebruik die LINKERSLUITING-stelling:
Voorbeeld
Kies alle gebruikers en hul gunsteling produk:
SELECT users.name AS user,
products.name AS favorite
FROM users
LEFT
JOIN products ON users.favorite_product = products.id
Wat vir jou hierdie resultaat sal gee:
[
{ user: 'John', favorite:
'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{
user: 'Amy', favorite: 'Tasty Lemons' },
{
user: 'Hannah', favorite: null },
{ user: 'Michael', favorite: null }
]
Reg Sluit aan
As jy alle produkte wil terugstuur, en die gebruikers wat dit as hul gunsteling het, selfs al het geen gebruiker dit as hul gunsteling nie, gebruik die REGTE JOIN-stelling:
Voorbeeld
Kies alle produkte en die gebruiker wat dit as hul gunsteling het:
SELECT users.name AS user,
products.name AS favorite
FROM users
RIGHT
JOIN products ON users.favorite_product = products.id
Wat vir jou hierdie resultaat sal gee:
[
{ user: 'John', favorite:
'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{
user: 'Amy', favorite: 'Tasty Lemons' },
{
user: null, favorite: 'Vanilla Dreams' }
]
Let wel: Hannah en Michael, wat geen gunstelingproduk het nie, is nie by die resultaat ingesluit nie.