Maison > Article > base de données > Comment puis-je effectuer différents types de jointures à l'aide de Sequelize dans Node.js ?
Rejoindre des requêtes à l'aide de Sequelize sur Node.js
Sequelize est une bibliothèque de mappage objet-relationnel (ORM) pour Node.js qui simplifie la base de données interactions. Il vous permet de définir vos modèles de base de données dans des objets JavaScript et d'effectuer des requêtes en utilisant une syntaxe familière.
Requêtes de jointure
Les requêtes de jointure sont utilisées pour combiner les données de plusieurs tables en fonction de critères communs. Dans Sequelize, vous pouvez effectuer des requêtes de jointure à l'aide de la propriété include dans les méthodes findAll ou findOne.
Jointure interne
Pour effectuer une jointure interne, définissez la propriété requise dans l'option d'inclusion sur true. Cela garantira que seuls les enregistrements avec des valeurs correspondantes dans la table jointe seront renvoyés.
Posts.findAll({ include: [{ model: User, required: true }] });
Jointure externe gauche
Pour effectuer une jointure externe gauche, définissez les paramètres requis. propriété dans l'option d'inclusion sur false ou laissez-la de côté, car sa valeur par défaut est false. Cela renverra tous les enregistrements de la table principale, même s'il n'y a aucune valeur correspondante dans la table jointe.
Posts.findAll({ include: [{ model: User, required: false }] });
Clauses Where dans les requêtes de jointure
Vous pouvez spécifiez également une clause Where dans l'option d'inclusion pour filtrer les enregistrements de la table jointe. Par exemple, pour rechercher toutes les publications dont l'année de naissance de l'utilisateur est 1984 :
Posts.findAll({ include: [{ model: User, where: { year_birth: 1984 } }] });
Clauses Where imbriquées
Vous pouvez même utiliser des clauses Where imbriquées pour filtrer sur plusieurs conditions dans la table jointe. Par exemple, pour rechercher toutes les publications dont le nom de l'utilisateur est "Sunshine" et son année de naissance est 1984 :
Posts.findAll({ where: { name: "Sunshine" }, include: [{ model: User, where: { year_birth: 1984 } }] });
Requêtes de participation avancées
Pour une participation plus avancée Pour les requêtes, y compris les requêtes un-à-plusieurs, plusieurs-à-plusieurs ou les auto-jointures, reportez-vous à la documentation Sequelize : http://docs.sequelizejs.com/en/latest/docs/models-usage/#eager-loading
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!