视图+左连接返回错误1054 MySQL 5



我在MySQL 5.5中写一个视图。我的代码如下:

  DROP VIEW IF EXISTS vw_lancamentos;
  CREATE VIEW vw_lancamentos AS
  SELECT
    l.id,
    l.data_hora_lancamento,
    l.valor,
    l.descricao,
    l.veiculo_id,
    l.plano_conta_id,
    pc.id,
    pc.master_id,
    pc.descricao,
    pc.tipo_movimento
  FROM
    lancamentos l, plano_de_contas pc
  LEFT JOIN
    plano_de_contas on (l.plano_conta_id = pc.id);

当我尝试编译上面的代码时,服务器返回这个错误:错误码:1054。

on子句中未知列'l.plano_conta_id'

我怎样才能使它工作?我以前使用过Firebird,我可以看到它与MySQL有很大的不同。

您的JOIN语法是错误的,您有两个具有相同名称的列。如果您想同时返回l.idpc.id,那么您需要为这两个字段提供一个别名来区分它们:

CREATE VIEW vw_lancamentos AS
  SELECT
    l.id as l_id,  --  add alias
    l.data_hora_lancamento,
    l.valor,
    l.descricao,
    l.veiculo_id,
    l.plano_conta_id,
    pc.id as pc_id, --  add alias
    pc.master_id,
    pc.descricao,
    pc.tipo_movimento
  FROM lancamentos l
  LEFT JOIN plano_de_contas pc
     on l.plano_conta_id = pc.id;

请试试这个…抱歉忽略我的评论,我只是注意到你是如何做LEFT JOIN的。安排连接语法的方式是错误的…

....
 FROM lancamentos l
 LEFT JOIN
 plano_de_contas pc on (l.plano_conta_id = pc.id);

按OP的注释编辑:

在你的select查询中,你选择了这些…两者都一样……因此,为了纠正推理,您需要为1添加别名。

    l.id,
    pc.id as pcid,
编辑:

  • SQLFIDDLE DEMO:为两个具有相同名称/重复名称的列中的一个提供别名就足够了…

相关内容

  • 没有找到相关文章

最新更新