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_producten het productveld idte 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.