我正在使用knex.js库从一个表中选择所有行,并从一个辅助表中获取一个count()。下面的代码运行良好:
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中所有行的计数。
发布于 2019-01-22 08:23:26
在knex.js中,可以使用on()向join语句添加条件,并使用andOn()添加条件。
这是有效的
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')https://stackoverflow.com/questions/54297386
复制相似问题