Erro join postgresql

Quando eu coloco o apelido na tabela eu nao consigo chama-la. fala que que ela não existe
eu também prefiro do jeito que vc demonstrou, porém dessa maneira também não funciona…
E sim, estou o usando o pgadmin

Sempre quando eu chamo uma tabela sem aspas dupla da um erro falando que a tabela não existe. Fazendo do jeito que indicou, fala que a “tbl_pessoa” não existe.

Está tentando rodar essa query de que forma?

Presumo que seja o PGAdmin, certo?
Eu concordo com o @AbelBueno. Ou você tira as aspas duplas de tudo ou coloca em tudo. Veja que na cláusula ON você não tem aspas.

Sim, PGAdmin
Mas se eu tiro as aspas fala que a tabela não existe
SELECT *
FROM TBL_PESSOA
JOIN TBL_TIPO_PESSOA
ON (TBL_PESSOA.ID_TIPO_PESSOA = TBL_TIPO_PESSOA.ID_TIPO_PESSOA);

erro:
ERRO: relação “tbl_pessoa” não existe
LINE 4: FROM TBL_PESSOA
^
********** Error **********
As tabelas foram todas criadas com letras maiusculas, e em todas, que eu preciso fazer alguma consulta, eu nao consigo a nao ser que eu coloque as aspas, sempre fala que a tabela não existe.

Queria entender também porque não consigo utilizar os apelidos das tabelas
quando coloco o apelido.coluna da tabela, da erro tambem dizendo que a tabela não existe…

Com apelido tem que funcionar. Aqui um exemplo: https://www.db-fiddle.com/f/mb1f55u8Lw4ostMg1voWyn/0

Aliás, nao acha uma boa idéia criar a tabela usando aspas duplas, vai gerar dor de cabeça pra sempre. Se pode corrigir isso, recomendo.

“TABELA” esse seria o nome da tabela? com aspas duplas mesmo??
SELECT *
FROM “TBL_PESSOA” P
JOIN “TBL_TIPO_PESSOA” TP
ON (P.ID_TIPO_PESSOA = TP.ID_TIPO_PESSOA);
Executando essa query, fala que a coluna “P.ID_TIPO_PESSOA” não existe, porém ela existe!!
e se eu tiro as aspas do from, fala que a tabela TBL_PESSOA não existe…
Preciso muito dessa ajuda…

Pode recriar as tabelas, sem aspas no nome?

Se o erro mudou, o problema é diferente.
Suspeito que está reclamando da coluna ID_TIPO_PESSOA pois ela também foi criada com aspas duplas. O que causa os mesmos problemas que o nome da tabela. Experimenta colocar o ID entre aspas e veja se funciona.

mas eu não criei tabelas ou colunas com aspas, e sim em letras maiusculas…
Entre aspas da o mesmo erro falando que a coluna não existe…

Faz assim entao, tenta reproduzir o erro naquele site que mandei o link acima (db-fiddle). Coloque as tabelas lá, alguns dados de exemplo e sua query.

https://www.db-fiddle.com/f/iPYuFvFpw4ac9UhqxTtwvM/0
Da uma olhada…
Se eu coloco a mesma query no pgadmin ela não funciona, porém no site deu certo…
Isso ta muito estranho

Pode ser um bug no pgadmin entao…

Como foi mencionado aqui antes, aspas duplas no nome causa dores de cabeça. Se nao puder se livrar delas, procure outro cliente de banco de dados.

Mas amigo, no meu banco eu não criei as tabelas e nem colunas com aspas.
Eu uso porque se não coloca da erro!
O nome delas no Shema está sem aspas!

As aspas nao fazem parte do nome da tabela. Quando o banco encontra aspas num nome, ele vai procurar aquele objeto exatamente como está escrito, enquanto normalmente ele procura tudo em minúscula.

Por exemplo: https://www.db-fiddle.com/f/iAuTCxQXGyWYavNeWq6qX7/0
Aqui foi possível criar 3 tabelas pessoas, pq estou usando aspas. Sem elas teria dado erro.
Se checar a tabela information_schema.tables do seu banco e notar que os nomes nao estao em minúsculo, é porque foram criadas com aspas.

Então no postgre, se eu criar uma tabela com letras MAIÚSCULAS ele vai entender que ela estão entre aspas??
Onde consigo chegar essa tabela information_schema.tables?

Pelo psql você pode usar o \d nome_da_tabela ele vai mostrar os detalhes

Se você criar sem aspas, ele vai entender como minuscula. Daí pode sempre referenciar sem aspas escrevendo do jeito que quiser.
Se criar com aspas, ele vai entender exatamente como escreveu, daí tem que usar a mesma forma sempre.

select * from information_schema.tables where table_name ilike 'tbl_pessoa' 

O ilike vai fazer ele ignorar maiuscula e minuscula na pesquisa.

1 curtida

agora ta explicado!!!
Não sabia dessa questão!!
Agora deu certo. Obrigado pela paciencia e ajuda!!!