Rejoindre Node.js MySQL


Joindre deux tables ou plus

Vous pouvez combiner des lignes de deux tables ou plus, en fonction d'une colonne liée entre elles, à l'aide d'une instruction JOIN.

Considérez que vous avez une table "utilisateurs" et une table "produits":

utilisateurs

[
  { 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:}
]

des produits

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

Ces deux tables peuvent être combinées en utilisant le champ des utilisateurs favorite_productet le champ des produits id.

Exemple

Sélectionnez les enregistrements avec une correspondance dans les deux tables :

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);
  });
});

Remarque : Vous pouvez utiliser INNER JOIN au lieu de JOIN. Ils vous donneront tous les deux le même résultat.

Enregistrez le code ci-dessus dans un fichier appelé "demo_db_join.js" et exécutez le fichier :

Exécutez "demo_db_join.js"

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

Ce qui vous donnera ce résultat :

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

Comme vous pouvez le voir dans le résultat ci-dessus, seuls les enregistrements avec une correspondance dans les deux tables sont renvoyés.


Joint gauche

Si vous souhaitez renvoyer tous les utilisateurs, qu'ils aient ou non un produit favori, utilisez l'instruction LEFT JOIN :

Exemple

Sélectionnez tous les utilisateurs et leur produit préféré :

SELECT users.name AS user,
products.name AS favorite
FROM users
LEFT JOIN
products ON users.favorite_product = products.id

Ce qui vous donnera ce résultat :

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

Joindre à droite

Si vous souhaitez renvoyer tous les produits et les utilisateurs qui les ont comme favoris, même si aucun utilisateur ne les a comme favoris, utilisez l'instruction RIGHT JOIN :

Exemple

Sélectionnez tous les produits et l'utilisateur qui les a comme favoris :

SELECT users.name AS user,
products.name AS favorite
FROM users
RIGHT JOIN
products ON users.favorite_product = products.id

Ce qui vous donnera ce résultat :

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

Remarque : Hannah et Michael, qui n'ont pas de produit préféré, ne sont pas inclus dans le résultat.