Dúvida ao fazer inner join

7 respostas Resolvido
mysql
G

Olá pessoal! Estou com um problema na minha consulta com inner join, só estou conseguindo fazer a consulta quando o campo do where é nome os outros campos ele diz que o campo não foi encontrado na clausula where. segue o código:

select
ef.CODREGISTRO as cod_registro, ef.CODCOLIGADA as coligada, f.NOME as nome, ef.CODEPI as cod_epi,
ef.DATARETIRADA as dt_retirada, ef.DATADEVOLUCAO as dt_devolucao, ef.CA as ca
from
vcatalogepi_pfunc ef inner join pfunc f
on
ef.CODCOLIGADA = f.CODCOLIGADA and ef.CHAPA = f.CHAPA where nome = ‘maria’;

7 Respostas

rodevops

Se cada tabela tem um campo nome, o mysql vai se perder por não saber qual deles você quer, da mesma forma que você marcou f.NOME no select, precisa indicar de qual tabela ele vem…

where f.nome = 'maria'

Ou

where ef.nome = 'maria'
G

Mas eu renomeei as tabelas (f.NOME as nome), mas com o nome da certo mas se eu colocar por exemplo where coligada = 1 não funciona

pmlm

Nas tuas tabelas existe a coluna coligada? ou existe a coluna codcoligada?

G

codcoligada

pmlm

Era una pergunta retórica…
se a coluna é codcoligada, não podes ter no where coligada

G
Mas porque funciona com nome? exemplo:

where nome = maria;

e com a coligada  funciona assim:

where ef.CODCOLIGADA = 1;

Por que eu achava que quando vc renomeia as colunas vc pode usar com o nome renomeado
rodevops
Solucao aceita

O que você renomeia entre SELECT e FROM não afeta nada no ON e WHERE, pegou?

O f.nome AS nome apenas mostra “bonitinho” para o usuário, por isso te mostrei que você deve usar no where como f.nome = ‘maria’…

Criado 13 de março de 2018
Ultima resposta 13 de mar. de 2018
Respostas 7
Participantes 3