首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用leftjoin和knex.js将where条件仅应用于辅助表

使用leftjoin和knex.js将where条件仅应用于辅助表
EN

Stack Overflow用户
提问于 2019-01-22 04:32:47
回答 1查看 1.1K关注 0票数 0

我正在使用knex.js库从一个表中选择所有行,并从一个辅助表中获取一个count()。下面的代码运行良好:

代码语言:javascript
运行
复制
    knex.schema.raw("SET sql_mode=''").then(() => {
    knex.select('empresas.id','empresas.rut','empresas.empresa','empresas.razon_social','procesos2.id','procesos2.id_empresas','procesos2.estado')
    .from('empresas')
    .leftJoin('procesos2', 'empresas.id', 'procesos2.id_empresas')
    .count('procesos2.id as total')
    .groupBy('empresas.id')

此查询显示empresas表中的所有行,如果存在表procesos2中的行,则获取计数。

不,我想在计数中添加一个条件,.where('procesos2.estado', '=', 0)

如果我添加这个where子句,我会得到一个正确的计数,但只显示一行,而不是empresas中的所有行。

如何添加条件以获取表empresas中所有行的计数。

EN

回答 1

Stack Overflow用户

发布于 2019-01-22 08:23:26

在knex.js中,可以使用on()向join语句添加条件,并使用andOn()添加条件。

这是有效的

代码语言:javascript
运行
复制
knex.schema.raw("SET sql_mode=''").then(() => {
    knex.select('empresas.id AS ide','empresas.rut','empresas.empresa','empresas.razon_social','procesos2.id','procesos2.id_empresas','procesos2.estado')
    .from('empresas')
    .leftJoin('procesos2', function() {
        this.on('procesos2.id_empresas ', '=', 'empresas.id')
            .andOn('procesos2.estado', '=', 0)
    })
    .count('procesos2.id as total')
    .groupBy('empresas.id')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54297386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档