Dúvida ao fazer inner join

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’;

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'

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

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

codcoligada

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

Mas porque funciona com nome? exemplo:
where nome = ‘maria’;
e com a coligada só funciona assim:
where ef.CODCOLIGADA = 1;
Por que eu achava que quando vc renomeia as colunas vc pode usar com o nome renomeado

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’…