2017-09-19 5 views
0

J'ai besoin d'exécuter cette requête en utilisant sequelize.Comment écrire une sous-requête avec plusieurs où, dans séquencer en utilisant NodeJS

select * from mysqlDB.songTable where 
X in (SELECT X FROM movieDB4.songTable where Y like('%pencil%') and Z='title') and 
Y='tam' and Z='language'; 

J'ai essayé comme ceci. mais il renvoie une erreur de valeur invalide [objet]. S'il vous plaît, aidez à résoudre cette requête.

const tempSQL = sequelize.dialect.QueryGenerator.selectQuery('songTable',{ 
     attributes: ['X'], 
     where: { 
      Y: {$like: '%'+text[i]}, 
      Z: "content_title" 
     }}) 
     .slice(0,-1); // to remove the ';' from the end of the SQL 

    User.findAll({ 
     where: { 
      X: { 
       $in: sequelize.literal('(' + tempSQL + ')'), 
       $and: {Y: lang.substring(0,3), 
         Z: 'language'} 
      } 
     } 
    }) 

Répondre

0

Vous pouvez utiliser sequelize.query() pour exécuter des requêtes brutes.

Exemple

return this.sequelize.query(`SELECT category_id, category_name from table_categories where category_id in (SELECT DISTINCT category_id from table_authorized_service_center_details where center_id in (SELECT center_id from table_authorized_service_center where brand_id ${condition}));`).then((results) => { 
       if (results.length === 0) { 
        reply({status: true, categories: [], forceUpdate: request.pre.forceUpdate}); 
       } else { 
        reply({status: true, categories: results[0], forceUpdate: request.pre.forceUpdate}); 
       } 
      }).catch((err) => { 
       console.log(err); 
       reply({status: false, message: "ISE"}); 
      }); 
+0

Je sais utiliser la requête brute, mais besoin de clarifier ce que je fait erreur dans le format ci-dessus. –

+0

Pouvez-vous coller l'erreur? –