diegorosa 0 Denunciar post Postado Setembro 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..... Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Setembro 3, 2014 DESC formandos Veja se esta coluna existe mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
diegorosa 0 Denunciar post Postado Setembro 3, 2014 desculpa mas não entendi? formandos é uma tabela.... não é uma coluna Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Setembro 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. Compartilhar este post Link para o post Compartilhar em outros sites
diegorosa 0 Denunciar post Postado Setembro 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 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 3, 2014 a COLUNA f.`origem_id` EXISTE ?! Compartilhar este post Link para o post Compartilhar em outros sites
diegorosa 0 Denunciar post Postado Setembro 3, 2014 olá Motta existe sim Compartilhar este post Link para o post Compartilhar em outros sites
advaldomesquita 93 Denunciar post Postado Setembro 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. Compartilhar este post Link para o post Compartilhar em outros sites
diegorosa 0 Denunciar post Postado Setembro 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 Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Setembro 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' Compartilhar este post Link para o post Compartilhar em outros sites
diegorosa 0 Denunciar post Postado Setembro 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 Compartilhar este post Link para o post Compartilhar em outros sites
advaldomesquita 93 Denunciar post Postado Setembro 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. Compartilhar este post Link para o post Compartilhar em outros sites
diegorosa 0 Denunciar post Postado Setembro 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... Compartilhar este post Link para o post Compartilhar em outros sites
Gerson Silas dos Santos 3 Denunciar post Postado Setembro 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 "; Compartilhar este post Link para o post Compartilhar em outros sites