Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 找不到具有导致列的左联接的Sql子句_Php_Mysql_Sql_Pdo - Fatal编程技术网

Php 找不到具有导致列的左联接的Sql子句

Php 找不到具有导致列的左联接的Sql子句,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我试图在一堆表(MySQL数据库)中使用左连接进行选择,这导致我找不到一列: SQLSTATE[42S22]:未找到列:“on子句”中的1054未知列“per_idn_validacao” 以下是我的sql语句: SELECT pes_idn_pergunta_especificidade, pes_idn_tipo_especificidade, pes_idn_pergunta, pes_des_ordem, pes_flg_obrigatoriedade , tes_idn_ti

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

SQLSTATE[42S22]:未找到列:“on子句”中的1054未知列“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
语法重新编写的查询: (注意:谓词上的
中的列需要安排为在其所在的表之前不显示任何列

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 

不要混合显式连接和隐式连接。简单规则:在from
子句的
中永远不要使用逗号。这将解决您的问题。范围,不要混合旧样式(隐式)连接和新样式的显式连接。这里的“slt_tipo_pergunta LEFT join slt_tipo_validacao”是在执行任何其他操作之前执行的,并且ON子句中只有这两个表的列可用。谢谢您的评论@jarlh。您能向我解释一下在这种情况下最好的方法是什么吗?我应该怎么做?再次感谢。@GordonLinoff谢谢您的评论。您能向我解释一下在这种情况下我应该怎么做吗?我已经找到了您的答案point@GordonLinoff。请发布一个答案,这样我可以给你评分。再次感谢!