Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados,
Estou quebrando a cabeça para fazer um select numa tabela de um banco de dados. Atenção, é uma tabela apenas, então não pode ser feito com INNER JOIN. O que preciso fazer é comparar os registros entre duas colunas, considerando diferentes linhas. Apenas consegui até o momento fazer uma comparação de linha a linha e não mostrar os registros com "mesmo nome" nas duas colunas em linhas diferentes. Para tentar ilustrar melhor o que procuro fazer, deixo um exemplo abaixo. Imaginem uma tabela chamada animais:
Coluna A I Coluna B
cachorro mosquito
gato cobra
lebre coelho
cachorro cachorro (linha 4)
papagaio orangotango
O resultado da consulta que preciso é o seguinte:
Coluna A I Coluna B
cachorro
cachorro cachorro (linha 4)
Como mencionei anteriormente, o que consegui foi apenas mostrar a linha 4 através da fórmula:
SELECT * FROM animais WHERE Coluna A=Coluna B
Ou seja, não aparece a linha 1. Entendo que logicamente ela não deve aparecer por não estar repetida na coluna B, mas necessitaria que a palavra "cachorro" aparecesse no resultado do select caso houvesse ColunaA=ColunaB. Por fim, não posso utilizar algo como
SELECT * FROM animais WHERE Coluna A='cachorro' OR Coluna B='cachorro', pois não sei se é só o cachorro que vai acontecer isso, podia ser lebre, papagaio, orangotango, qualquer coisa.
Resumindo, o que procuro mesmo é uma forma de comparar os registros entre colunas de uma mesma tabela, mostrando apenas as ocorrências iguais entre colunas, em diferentes linhas e não de linha a linha. Espero ter sido claro. Aguardo uma ajuda. Muito obrigado!
>
Prezados,
Estou quebrando a cabeça para fazer um select numa tabela de um banco de dados. Atenção, é uma tabela apenas, então não pode ser feito com INNER JOIN. [...]
Desculpe, por que não pode? Isso não resolve o problema?
Motta, não consigo fazer Join na mesma tabela. lokaodomau, eu tentei fazer o inner join numa tentativa de mostrar os registros iguais nas duas colunas, podendo ser em linhas diferentes. Entretanto, sempre dava um erro dizendo que faltava a outra tabela. Ao ler sobre o Inner Join, li que o mesmo deve ser feito com no mínimo duas tabelas pra funcionar. O que fiz para remediar foi criar uma variável com o nome do animal, por exemplo, $animal, de modo que se o cara coloca "cachorro" executa um select com Coluna A='$animal' OR Coluna B='$animal'. Mas essa busca sem definir a variável por procurar por repetição não sei como fazer com o select ou qualquer outro bagulho. Somente criando uma variável.
Tente assim:
SELECT *
FROM animais a1
INNER JOIN animais a2 ON a1.Coluna_A=a2.Coluna_B
Muito obrigado, lokaodomau! Funciona perfeitamente!
Se pode fazer join na mesma tabela , me parece que isto resolve o caso.