Tag: join

node.jsjoin – 来自php implode

我在PHP中有以下代码: $IDs = implode(",", array_keys($result["matches"])); $sql = "SELECT * FROM table WHERE id IN ($IDs)"; 我是“翻译”到Node.js,我想这个implode成为array.join,所以我试过这个: var ids = Object.keys(answer['matches']).join(","); var sql = "SELECT * FROM xml_it WHERE id IN (" + ids + ")"; 现在,如果我回显PHP $ sqlvariables,我得到预期的结果: SELECT * FROM table WHERE id IN (3187,3220,3233,3245,3246,3251,3253,3256, … 但是,与node.js,我得到这个: SELECT * FROM xml_it WHERE id_xml IN […]

Node.js Sequelize手动连接数据

现在用Sequelize for Node.JS来绊倒几个小时。 我没有这样的运气来build立联系(我必须在有限的时间内把我的大部分架构拆开)。 对于我的应用程序,只有几个关联(大部分博客相关)。 在我的一个博客API调用中(这是针对特定的博客ID): exports.single = function (req, res, next) { db.Models.blog.find({ where: res.locals.where }) .success(function (blog) { getAuthors(blog.BLOG_ID, function (authors) { blog.AUTHORS = authors; res.locals.data = blog; next(); }); }) .error(function (err) { res.locals.error = err; next(); }); } 我打电话给getAuthors(blogId)来获取作者< – >博客链接表中的所有作者: function getAuthors (blogId, fn) { db.Models.author.findAll({ where: { BLOG_ID: blogId […]

MySQL – 当一个表可能没有对应的行时,如何在查询中组合两个表

我正在用NodeJS和MySQL编写一个基本的CMS系统。 我正在使用WordPress的post的表格结构,即“post”和“post_meta”。 'posts'表有以下几列… id post_title post_date …etc “post_meta”表格包含以下几列… id post_id – ID of associated post meta_key meta_value 我喜欢这种风格,因为它可以让我的行很容易在SQL编辑器中读取,而不必长时间滚动,也可以根据需要添加额外的元数据。 使用JOIN(下面的查询)我能够创build一个结果集,其中包含来自“posts”的值,以及以“post_meta.meta_key”命名的包含“post_meta.meta_value”值的附加列。 我目前遇到的问题是如何去返回'meta_key'不存在于'posts_meta'表中的结果,而是用NULL填充结果列。 用法示例 2post在'posts'表中,第一个有2个meta_keys与它关联,另一个只有1个。 'post'表格内容 id : 1 title : 'Post 1' post_date : 'timestamp of posted date/time' id : 2 title : 'Post 2' post_date : 'timestamp of posted date/time' 'posts_meta'表格内容 id : 1 post_id : […]

仅在主表上聚合GROUP BY,而不是在连接中完整连接的表

我有五个表USER_ATTRIB , QUESTION_MAIN , REPLY_MAIN , CATEGORY_MAIN , QSTN_CATG相关如下: m.QUESTION_MAIN.belongsTo(m.USER_ATTRIB, { foreignKey: 'POSTER_I', targetKey: 'USER_I'}); m.QUESTION_MAIN.hasMany(m.REPLY_MAIN, { foreignKey: 'QSTN_I' }); m.QUESTION_MAIN.belongsToMany(m.CATEGORY_MAIN, { through: m.QSTN_CATG, foreignKey: 'QSTN_I' }); m.QUESTION_MAIN.hasMany(m.QSTN_CATG, { foreignKey: 'QSTN_I' }); 我想在QUESTION_MAIN上运行查询来获取有关问题的详细信息。 其中一个细节是对问题的答复数量,可以通过查询 SELECT COUNT(REPLY_MAINs.QSTN_I) GROUP BY QSTN_I; 我想要运行的组合查询是: SELECT `QUESTION_MAIN`.* ,`USER_ATTRIB`.`USERATTRIB_ID` AS `USER_ATTRIB.USERATTRIB_ID` ,`USER_ATTRIB`.`USER_NAME` AS `USER_ATTRIB.USER_NAME` ,`QSTN_CATGs`.`QSTN_CATG_ID` AS `QSTN_CATGs.QSTN_CATG_ID`, ,`QSTN_CATGs`.`CATG_I` AS `QSTN_CATGs.QSTN_CATG_I` ,`REPLY_MAINs`.`REPLY_ID` […]

在Sequelize中使用JOIN

提示如何在Sequelize中使用JOIN? 我有以下代码: db.User.findAll({ attributes: ['id'], where: {vipEnd: {lt: expiresVip}, vip: true}, limit: 100, order: 'id' }).then(function(users) { 4,看起来像这样: SELECT "vkId" AS "id" FROM "user" AS "user" WHERE "user"."vipEnd" < 1469699683 –expiresVip AND "user"."vip" = true ORDER BY id LIMIT '100'; 如何实现这样的结果? SELECT "vkId" AS "id" FROM "user" AS "user" LEFT JOIN "notification" ON "notification"."userId" = […]

如何使用$ lookup和DbRef在MongoDB和NodeJS中join两个集合?

如果我有两个集合其中之一有dbref,如何可能join使用$ lookup和dbref?

如何用外键创build带有sequelize或sequelize-cli的连接表

我正在为两种types创build模型和迁移,玩家和团队有许多关系。 我使用sequelize模型:创build,但不看如何指定外键或连接表。 sequelize model:create –name Player –attributes "name:string" sequelize model:create –name Team –attributes "name:string" 模型创build后,我添加关联。 玩家: Player.belongsToMany(models.Team, { through: 'PlayerTeam', foreignKey: 'playerId', otherKey: 'teamId' }); 团队: Team.belongsToMany(models.Player, { through: 'PlayerTeam', foreignKey: 'teamId', otherKey: 'playerId' }); 然后迁移与运行 sequelize db:migrate 有玩家和团队的表,但数据库中没有连接表(也不是外键)。 如何创build外键和连接表? 有没有关于如何做到这一点的权威指南?

NodeJS中的后缀:内部JOIN实现失败

我有三个表承包商,这两个项目和连接表project_contractors和我创build模型,并写下如下关系, Contractor.hasMany(Project, {joinTableName: 'projects_contractors'}) Project.hasMany(Contractor, {joinTableName: 'projects_contractors'}) 我想访问这个基于承包商的项目意味着内部联接。 核心查询:从承包商selectc.id,c.name,p.id,p.name c内部联接projects_contractors pc上c.id = pc.contractor_id内部联接项目p上p.id = pc.project_id 我在执行下面的代码时失败了。 “required”是一个关键字,用于内部JOIN,但如果我们保留,则不起作用。 Contractor.findAll({ include: [Project, {required: false}]}).success(function(list){ console.log("hi") res.send(204) }) 如果不需要,它会在项目和承包商上创build一个左外部JOIN。 build议我为上述senario示例。