我正在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 clause'中的未知列'l.plano_conta_id'
我怎样才能让它发挥作用?我之前和Firebird合作过,而且我可以看到它与MySQL完全不同。
答案 0 :(得分:4)
您的JOIN
语法错误,并且您有两个具有相同名称的列。如果您想同时返回l.id
和pc.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;
答案 1 :(得分:2)
请试试这个...对不起igonore我的评论,我刚刚注意到你是如何做LEFT JOIN
的。安排连接语法的方式是错误的......
....
FROM lancamentos l
LEFT JOIN
plano_de_contas pc on (l.plano_conta_id = pc.id);
根据OP评论编辑:
在您的选择查询中,您正在选择thtese ...两者都相同...因此要重新校正推理,您需要为其中一个添加别名。
l.id,
pc.id as pcid,
编辑: