首页 > 解决方案 > 在 3 个表中使用 join 查询 knex

问题描述

我无法使用 knex 运行下面的查询。我设法与两个表进行连接,但是这个连接与 3 个表,其中车辆元素 id 为 = x,我没有得到它。

下面是 sql 查询和我尝试使用 knex 的方式,但没有成功。

非常感谢您!

SELECT v.id   AS id_veiculo, 
       v.placa, 
       v.marca, 
       v.exibicao, 
       v.modelo, 
       v.renavam, 
       v.chassi, 
       v.ano_fabri, 
       v.ano_modelo, 
       v.id_combustivel, 
       v.capacidade_litros, 
       v.cor, 
       v.uf_placa, 
       v.status, 
       t.id   AS id_servico, 
       t.servico, 
       c.nome AS combustivel 
FROM   veiculo v 
       INNER JOIN tipo_servico_veiculo tsv 
               ON tsv.veiculo_id = v.id 
                  AND v.id = :id 
       INNER JOIN tipo_servico t 
               ON t.id = tsv.servico_id 
       INNER JOIN combustivel c 
               ON c.id = v.id_combustivel 

knex,版本:“^0.21.2”

const result = await knex('veiculo as v')
  .join('tipo_servico_veiculo as tsv', function () {
    this.on('tsv.veiculo_id', '=', 'v.id').andOn('v.id', '=', id);
  })
  .join('tipo_servico t', 't.id', '=', 'tsv.servico_id')
  .join('combustivel as c', 'v.id_combustivel', '=', 'c.id')
  .select(
    'v.id',
    'v.placa',
    'v.marca',
    'v.exibicao',
    'v.modelo',
    'v.cor',
    'v.status',
    'c.nome as combustivel',
    't.servico'
  );

标签: mysqlnode.jsexpressknex.js

解决方案


推荐阅读