Node.js MySQL Join
Deelnemen aan twee of meer tafels
U kunt rijen uit twee of meer tabellen combineren, gebaseerd op een gerelateerde kolom ertussen, door een JOIN-instructie te gebruiken.
Stel dat u een tabel "gebruikers" en een tabel "producten" heeft:
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:}
]
producten
[
{ id: 154, name:
'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{
id: 156, name: 'Vanilla Dreams' }
]
Deze twee tabellen kunnen worden gecombineerd door het gebruikersveld favorite_product
en het productveld
id
te gebruiken.
Voorbeeld
Selecteer records met een overeenkomst in beide tabellen:
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);
});
});
Opmerking: u kunt INNER JOIN gebruiken in plaats van JOIN. Ze geven je allebei hetzelfde resultaat.
Sla de bovenstaande code op in een bestand met de naam "demo_db_join.js" en voer het bestand uit:
Voer "demo_db_join.js" uit
C:\Users\Your Name>node demo_db_join.js
Wat je dit resultaat geeft:
[
{ user: 'John', favorite:
'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{
user: 'Amy', favorite: 'Tasty Lemons' }
]
Zoals u aan het bovenstaande resultaat kunt zien, worden alleen de records met een overeenkomst in beide tabellen geretourneerd.
Linker join
Als je alle gebruikers wilt retourneren , ongeacht of ze een favoriet product hebben of niet, gebruik dan het LEFT JOIN-statement:
Voorbeeld
Selecteer alle gebruikers en hun favoriete product:
SELECT users.name AS user,
products.name AS favorite
FROM users
LEFT
JOIN products ON users.favorite_product = products.id
Wat je dit resultaat geeft:
[
{ user: 'John', favorite:
'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{
user: 'Amy', favorite: 'Tasty Lemons' },
{
user: 'Hannah', favorite: null },
{ user: 'Michael', favorite: null }
]
Rechts meedoen
Als je alle producten wilt retourneren, en de gebruikers die ze als favoriet hebben, zelfs als geen enkele gebruiker ze als favoriet heeft, gebruik dan het RIGHT JOIN statement:
Voorbeeld
Selecteer alle producten en de gebruiker die ze als favoriet heeft:
SELECT users.name AS user,
products.name AS favorite
FROM users
RIGHT
JOIN products ON users.favorite_product = products.id
Wat je dit resultaat geeft:
[
{ user: 'John', favorite:
'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{
user: 'Amy', favorite: 'Tasty Lemons' },
{
user: null, favorite: 'Vanilla Dreams' }
]
Let op: Hannah en Michael, die geen favoriet product hebben, worden niet meegerekend in het resultaat.