SELECT retornando vazio SQL?

Eu estou tentando executar a seguinte SQL

SELECT itens.id, itens.conteudo, itens.lista, itens.usuario, itens.evento, rcat.nome FROM itens JOIN rcat ON itens.rcat = rcat.nome WHERE itens.lista='Lista de referências' AND itens.usuario=1 ORDER BY itens.rcat,itens.id;

Porém esse SELECT está retornando vazio. As três tabelas…

rcat

Na tabela itens tem um item com a lista de referências no campo lista, usuário 1 e rcat 1. Mas mesmo assim o SELECT retorna vazio. Alguém sabe me dizer por quê?

Você está realizando uma comparação entre dois tipos diferentes, no caso um tipo int e um tipo varchar, sendo assim essa comparação nunca retornará nada.
É até estranho que não tenha retornado um erro…

1 curtida

Eu gostaria de fazer um SELECT normal na tabela itens, porém trocando o campo rcat pelo nome do rcat. Acho que não entendi direito o conceito de JOIN. É a primeira vez que eu faço isso. Sabe me dizer como fazer isso?

Apesar de não entender muito bem o que você quer fazer, o JOIN tem que ser usado para comparar dois dados de uma tabela, de forma que se forem iguais ele concatenam essas tabelas, transformando em uma tupla só.
Por exemplo:
Tabela A que contenha os campos cpf, nome, telefone.
Tabela B que contenha os campos cpf, endereço, rg.

Ao realizar o JOIN entre essas duas tabelas, você tem que pegar valores compatíveis para realizar a comparação, na maioria dos casos é uma foreign key(chave estrangeira), nesse caso o CPF.
Sendo assim, irá realizar a comparação e retornar os valores onde o cpf seja igual nas duas tabelas, (cpf, nome, telefone, endereço, rg)

No seu exemplo, levando em conta os metadados que você instanciou, o JOIN teria de ser realizado entre o id da tabela rcat e o rcat da tabela itens.

1 curtida

Valeu cara, agora sim eu entendi. Tá funcionando.