我试图用左联接在一堆表(MySQL数据库)中做出选择,这导致我找不到列:

SQLSTATE [42S22]:找不到列:1054“ on子句”中的未知列“ per_idn_validacao”

这是我的sql语句:

SELECT pes_idn_pergunta_especificidade,
pes_idn_tipo_especificidade,
pes_idn_pergunta,
pes_des_ordem,
pes_flg_obrigatoriedade ,
tes_idn_tipo_especificidade,
tes_des_descricao,
pro_idn_programa,
pro_des_descricao,
per_idn_pergunta,
per_idn_resposta,
per_idn_validacao,
per_idn_tipo,
per_des_descricao,
per_flg_autocompletar,
per_des_ordem,
per_des_strategy,
per_des_hint,
tpp_idn_tipo,
tpp_des_descricao,
tre_idn_tipo,
tre_des_descricao
FROM
slt_pergunta_especificidade,
slt_tipo_especificidade,
slt_programa, slt_pergunta,
slt_tipo_resposta, slt_tipo_pergunta
LEFT JOIN slt_tipo_validacao ON per_idn_validacao = tvl_idn_validacao
WHERE pro_idn_programa = tes_idn_programa
AND tpp_idn_tipo = per_idn_tipo
AND per_idn_pergunta = pes_idn_pergunta AND tre_idn_tipo = per_idn_resposta AND tes_idn_tipo_especificidade = pes_idn_tipo_especificidade
AND pes_idn_tipo_especificidade = :id
ORDER BY pes_des_ordem


有人可以帮我吗?

最佳答案

这是仅使用JOIN语法重写的查询:
(注意:ON谓词中的列将需要进行排列,以使其所在的表之前没有列出现。

SELECT pes_idn_pergunta_especificidade,
       pes_idn_tipo_especificidade,
       pes_idn_pergunta,
       pes_des_ordem,
       pes_flg_obrigatoriedade ,
       tes_idn_tipo_especificidade,
       tes_des_descricao,
       pro_idn_programa,
       pro_des_descricao,
       per_idn_pergunta,
       per_idn_resposta,
       per_idn_validacao,
       per_idn_tipo,
       per_des_descricao,
       per_flg_autocompletar,
       per_des_ordem,
       per_des_strategy,
       per_des_hint,
       tpp_idn_tipo,
       tpp_des_descricao,
       tre_idn_tipo,
       tre_des_descricao
FROM   slt_pergunta_especificidade
JOIN   slt_tipo_especificidade
   ON  pro_idn_programa = tes_idn_programa
JOIN   slt_programa
   ON  tpp_idn_tipo = per_idn_tipo
JOIN   slt_pergunta
   ON  per_idn_pergunta = pes_idn_pergunta
JOIN   slt_tipo_resposta
   ON  tre_idn_tipo = per_idn_resposta
JOIN   slt_tipo_pergunta
   ON  tes_idn_tipo_especificidade = pes_idn_tipo_especificidade
LEFT JOIN slt_tipo_validacao
   ON  per_idn_validacao = tvl_idn_validacao
WHERE  pes_idn_tipo_especificidade = :id
ORDER BY pes_des_ordem

08-06 16:33
查看更多