diegorosa 0 Report post Posted September 3, 2014 Olá pessoal.... estou tendo este erro : Unknown column 'f.origem_id' in 'where clause'' in O slq da minha consulta é esse: SELECT u.name AS usuario_nm, g.name AS usuario_grupo, f.clientes_id, f.usuario_id, f.curso_id, f.curva, f.periodo, f.origem_id AS origem_id, f.instituicao_id, f.parceiro_id, f.cidade_id, f.estado_id, f.nome, f.email, f.formatura, f.semestre, f.telefone1, f.qtdformandos, f.last_update, f.proposta_alphanet, f.curso_id AS curso_cd, f.instituicao_id AS instituicao_cd, o.descricao AS origem_nm, o.origem_id AS origem_cd, c.curso_nm, i.instituicao_nm, cidade.cidade_nm, cidade.cidade_cd, IF((select count(*) from cidade_representante where cidade_cd = f.cidade_id) > 0, true,false) AS mapeamento, e.estado_nm, e.estado_cd, rg.regiao_nm AS regiao, p.nome AS parceiro_nm, a.abordado, n.proposta, n.ultimo, n.motivo, n.status_id, n.negociando, sn.descricao FROM formandos AS f LEFT JOIN ( SELECT formando_id, status_id, max(proposta) AS proposta, max(last_update) AS ultimo, motivo, negociando FROM negociacao GROUP BY formando_id ) AS n ON n.formando_id = f.clientes_id LEFT JOIN curso AS c ON c.curso_cd = f.curso_id LEFT JOIN instituicao AS i ON i.instituicao_cd = f.instituicao_id LEFT JOIN cidade ON cidade.cidade_cd = f.cidade_id LEFT JOIN estado AS e ON e.estado_cd = f.estado_id LEFT JOIN regiaogeografica AS rg ON rg.regiao_cd = e.regiao_cd LEFT JOIN user AS u ON u.id = f.usuario_id LEFT JOIN groups AS g ON g.id = u.Group_id LEFT JOIN origem AS o ON o.origem_id = f.origem_id LEFT JOIN parceiros AS p ON p.id = f.parceiro_id LEFT JOIN abordagem AS a ON a.formando_id = f.clientes_id LEFT JOIN statusnegociacoes AS sn ON sn.id = n.status_id WHERE 1 = 1 AND f.`origem_id` = '1' ORDER BY `clientes_id` DESC LIMIT 0, 50 como pode a coluna "f.origem_id" não existir ? creio que seja algum erro de formatação mas já tentei um monte de coisa aqui e não dá certo..... alguem sabe o que pode ser ? se ajudar eu dei um SELECT VERSION() aqui e voltou 5.1.56 que é a versão do mysql no servidor e eu esqueci de mencionar outra coisa: se eu pegar essa mesma consulta e executá-la pelo mysqlwork-bench( eu uso este heheh) ela roda de boa.... mas pelo php dá esse erro ai..... Share this post Link to post Share on other sites
lokaodomau 61 Report post Posted September 3, 2014 DESC formandos Veja se esta coluna existe mesmo. Share this post Link to post Share on other sites
diegorosa 0 Report post Posted September 3, 2014 desculpa mas não entendi? formandos é uma tabela.... não é uma coluna Share this post Link to post Share on other sites
lokaodomau 61 Report post Posted September 3, 2014 Desculpe, execute o comando DESC formandos, no reresultado, procure pela coluna que ocorreu o erro, verifique se esta coluna existe, e a maneira como ela foi escrita. Com o comando "DESC formandos" você vê a estrutura da tabela. Share this post Link to post Share on other sites
diegorosa 0 Report post Posted September 3, 2014 alterei o trecho SELECT .... f.origem_id AS origem_id /* alterei para */ f.origem_id AS origem_codigo ... e mesmo assim continua dando o mesmo erro... ele diz que a coluna origem_codigo é desconhecida..... na verdade a coluna não existe mesmo ... o que estou fazendo é usar um apelido ("alias") para a coluna.... pois na tabela origem tambem tem a coluna origem_id nao estou entendendo o porque deste erro chato Share this post Link to post Share on other sites
Motta 645 Report post Posted September 3, 2014 a COLUNA f.`origem_id` EXISTE ?! Share this post Link to post Share on other sites
diegorosa 0 Report post Posted September 3, 2014 olá Motta existe sim Share this post Link to post Share on other sites
advaldomesquita 93 Report post Posted September 3, 2014 na ultima linha: WHERE 1 = 1 AND f.origem_id = '1' ORDER BY clientes_id DESC LIMIT 0, 50 tem aspas a mais na coluna. Share this post Link to post Share on other sites
diegorosa 0 Report post Posted September 3, 2014 o comando DESC formandos me retorna isso clientes_id bigint(20) NO PRI auto_increment usuario_id varchar(255) YES curso_id bigint(20) YES curva varchar(2) NO periodo varchar(2) NO instituicao_id bigint(20) YES origem_id bigint(20) NO MUL parceiro_id bigint(20) YES cidade_id bigint(20) NO MUL estado_id varchar(2) NO MUL nome varchar(255) YES email varchar(255) YES formatura varchar(255) YES semestre varchar(255) YES telefone1 varchar(255) YES qtdformandos varchar(255) YES last_update timestamp YES proposta_alphanet varchar(255) YES Share this post Link to post Share on other sites
lokaodomau 61 Report post Posted September 3, 2014 O erro diz que não encontra a coluna `origem_id` na tabela `formandos`, ou `f` ("alias"): Unknown column 'f.origem_id' in 'where clause' Share this post Link to post Share on other sites
diegorosa 0 Report post Posted September 3, 2014 O erro diz que não encontra a coluna `origem_id` na tabela `formandos`, ou `f` ("alias"): sim mas acontece que essa coluna existe na ultima linha: WHERE 1 = 1 AND f.origem_id = '1' ORDER BY clientes_id DESC LIMIT 0, 50 tem aspas a mais na coluna. desculpe.. mas nao entendi direito ..... as aspas que estão sobrando é no '1' ? A.jr, eu tirei as aspas e continuou na mesma.... a ultima linha ficou assim: WHERE 1 = 1 AND f.origem_id = 1 ORDER BY clientes_id DESC LIMIT 0, 50 ai ai Share this post Link to post Share on other sites
advaldomesquita 93 Report post Posted September 3, 2014 Sem a estrutura das tabelas fica um pouco complicado descobrir. O que você pode fazer, eh criar uma nova consulta e ir colocando os joins um a um para teste. Share this post Link to post Share on other sites
diegorosa 0 Report post Posted September 3, 2014 segue entao a estrutura das duas tabelas: CREATE TABLE `formandos` ( `clientes_id` bigint(20) NOT NULL AUTO_INCREMENT, `usuario_id` varchar(255) COLLATE utf8_bin DEFAULT NULL, `curso_id` bigint(20) DEFAULT NULL, `curva` varchar(2) COLLATE utf8_bin NOT NULL, `periodo` varchar(2) COLLATE utf8_bin NOT NULL, `instituicao_id` bigint(20) DEFAULT NULL, `origem_id` bigint(20) NOT NULL, `parceiro_id` bigint(20) DEFAULT NULL, `cidade_id` bigint(20) NOT NULL, `estado_id` varchar(2) COLLATE utf8_bin NOT NULL, `nome` varchar(255) COLLATE utf8_bin DEFAULT NULL, `email` varchar(255) COLLATE utf8_bin DEFAULT NULL, `formatura` varchar(255) COLLATE utf8_bin DEFAULT NULL, `semestre` varchar(255) COLLATE utf8_bin DEFAULT NULL, `telefone1` varchar(255) COLLATE utf8_bin DEFAULT NULL, `qtdformandos` varchar(255) COLLATE utf8_bin DEFAULT NULL, `last_update` timestamp NULL DEFAULT NULL, `proposta_alphanet` varchar(255) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`clientes_id`), KEY `fk_clientes_origem_idx` (`origem_id`), KEY `fk_clientes_cidade1_idx` (`cidade_id`), KEY `fk_clientes_estado1_idx` (`estado_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2393 DEFAULT CHARSET=utf8 COLLATE=utf8_bin e da tabela origem: CREATE TABLE `origem` ( `origem_id` bigint(20) NOT NULL AUTO_INCREMENT, `descricao` varchar(255) COLLATE utf8_bin DEFAULT NULL, `last_update` datetime DEFAULT NULL, PRIMARY KEY (`origem_id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin pessoal qualquer filtro ou condição que eu tente depois do WHERE me dá o mesmo erro... Unknown column NOME_DA_COLUNA in 'where clause' o que estou observando é que todas as colunas que coloco na condição depois do WHERE são as mesmas previamente declaradas depois do SELECT ..... e ainda... todas essas colunas existem em suas respectivas tabelas e o mais curioso como já disse.... que se eu rodar o mesmo comando pelo workbenck funciona de boa... Share this post Link to post Share on other sites
Gerson Silas dos Santos 3 Report post Posted September 11, 2014 Estou com este mesmo problema, no php não funciona mas no phpMyAdmin funciona legal. Nenhuma solução??? achei o erro! No meu caso aqui eu tinha dois sql's que utilizam o mesmo "where" um me trazia os registros e outro me trazia apenas o valor total. Acontece que no sql que me trazia o valor total eu não utilizei um alias (mov_financeiro f). sql 1 $where = "1=1"; $where .= ($id_tecnico==='0' ? "" : " AND f.id_pessoa='$id_tecnico'"); $where .= " AND id_tipo_mov='-2' AND data_movimento BETWEEN '$data_ini' AND '$data_fim' AND valor_pagto > 0"; $sql = "SELECT p.nm_pessoa, f.no_documento, f.data_movimento, f.valor_movimento " . "FROM mov_financeiro f " . "LEFT JOIN pessoas p ON (f.id_pessoa=p.id_pessoa) " . "WHERE $where " . "ORDER BY f.data_movimento"; sql 2 (o erro estava neste sql, onde está "mov_financeiro f" estava apenas "mov_financeiro") $sqltot = "SELECT sum(valor_movimento) as valor_total " . "FROM mov_financeiro f " . "WHERE $where "; Share this post Link to post Share on other sites