Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

diegorosa

Unknown column in 'where clause'' COMO RESOLVER ?

Recommended Posts

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

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

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

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

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

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

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

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

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.