Jump to content
Sign in to follow this  
kinect

Consulta em banco de dados - registros iguais numa mesma tabela

Recommended Posts

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!

 

 

Share this post


Link to post
Share on other sites

Se pode fazer join na mesma tabela , me parece que isto resolve o caso.

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Keber_Crato
      Boa noite galera!!  estou com dificuldades em conseguir o somatório de de dois campos de uma tabela e o somatório de um campo de outra tabela,
      segue assim:
      Tenho uma tabela chamada CID_TITULAR  e outra CID_COMPOSICAO. a tabela CID_TITULAR recebe os cadastro de um programa social e a tabela CID_COMPOSICAO o cadastros dos dependentes (filhos, parentes) TITULAR_COD = COMPOSICAO_COD_TITULAR (chave de ligação)
      tenho dois campos na CID_TITULAR de valores, são eles: TITULAR_RENDA e TITULAR_RENDA_MENSAL e na outra tabela CID_COMPOSICAO tenho um campo de valor COMPOSICAO_RENDA
      estão povoado assim:
       
      Na tabela CID_TITULAR nos campos TITULAR_RENDA (R$ 10.00) e TITULAR_RENDA_MENSAL (R$ 10.00) e na tabela CID_COMPOSICAO no campo COMPOSICAO_RENDA tenho 3 registros com os valores R$ 300.00, R$ 200.00 e R$ 100.00
      GOSTARIA QUE A SELEÇÃO FOSSE O VALOR DOS DOIS CAMPOS DA TABELA CID_TITULAR + O CAMPO DA OUTRA TABELA CID_COMPOSICAO
       
      NO CASO O SOMATÓRIO CORRETO SERIA R$ 620,00
      10,00 no campo TITULAR_RENDA
      10,00 no campo TITULAR_RENDA_MENSAL
      300,00 NO 1º REGISTRO no campo COMPOSICAO_RENDA
      200,00 NO 2º REGISTRO no campo COMPOSICAO_RENDA
      100,00 NO 3º REGISTRO no campo COMPOSICAO_RENDA
       
      TOTALIZANDO R$ 620,00
      O PROBLEMA É:
      Quando faço a seleção com inner join a resposta é R$ 660,00 e não 620,00. a seleção triplica o valor da primeira tabela devido ter três registros na tabela CID_COMPOSICAO
       
      TABELA CID_TITULAR
      CREATE TABLE `cid_titular` (
        `titular_cod` int(11) NOT NULL AUTO_INCREMENT,
        `titular_renda` float(10,2) DEFAULT NULL,
        `titular_renda_mensal` float(10,2) DEFAULT NULL,
        PRIMARY KEY (`titular_cod`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
       
      TABELA CID_COMPOSICAO
      CREATE TABLE `cid_composicao` (
        `composicao_cod` int(11) NOT NULL AUTO_INCREMENT,
        `composicao_cod_titular` int(11) DEFAULT NULL,
        `composicao_renda` float(10,2) DEFAULT NULL,
        PRIMARY KEY (`composicao_cod`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
       
       
      GOSTARIA MUITO DE AJUDA GALERA. OBRIGADO!!!!
       

    • By Luciano Marques
      Então pessoal é o seguinte: Estou tendo problemas para impedir acesso simultâneo no meu projeto. Foi depois de muito pesquisar que vim aqui abrir esse tópico. 
      Enfim, eu até consegui colocar uma teoria em prática que era a de criar uma coluna na tabela `usuarios` com 1 para ativo, e 2 para  inativo. e depois coloquei no topo a condição IF para se 1 já preenchido não permite o login. até ai de boa. o problema vem se o usuário não desloga só fecha a janela. a coluna ainda permanece como ativa 1. mesmo expirando o login, não ocorre o update na base de dados. Se alguém puder me ajudar nessa, preciso concluir esse trabalho ainda essa semana. desde já agradeço 
    • By drx
      Olá Pessoal!
       
      Eu estou tentando instalar o sgbd navicat para acessar meu banco de dados, porém sem sucesso. 
      Pergunta: Para usar o sgbd navicat é necessário instalar o mysqlserver  ou o navicat já traz no pacote dele ao instalar?
      Aguardo.
       
    • By renzogr
      Olá Masters
       
      Estou precisando incluir uma string num campo de uma tabela mysql.
      É o seguinte:
      Tenho um campo contendo instruções de uma receita culinária e preciso colocar a string "-- " (sem aspas) no início de cada linha do campo das instruções.
      Já tentei o 
      UPDATE tabela SET variavel = concat("-- ", variavel); mas ele só altera a primeira linha...  Preciso encontrar as demais linhas dentro do campo e colocar a string na frente.
       
      Alguém tem uma ideia de como fazer ?
       
    • By mayko@123
      TENHO O SEGUINTE SELECT :   select loja,NOME,PREÇO from produtos  GROUP BY NOME,LOJA order by NOME,PREÇO ASC ;
      E O RETORNO É : 
       
      LOJA             NOME                            PREÇO
      A banana prata 1,98 C                  banana prata 1,99 B          COCO VERDE 1 123   COCO VERDE 1 C  COCO VERDE 1 C   laranja pera rio 0,49 A       laranja pera rio 1,99 123 laranja pera rio 1211 B LARANJA SERRA DAGUA 1,99 C LARANJA SERRA DAGUA 2,99 B maca fuji 2,50 C maca fuji 2,97 A maca fuji 2,99 B MAMAO 1,97 C MAMAO 2,10 123 PESSEGO 12 C PESSEGO 2,30 A PESSEGO 234 C UVA 1212 123 UVA 212 A UVA 3,25  
      QUERIA QUE ME RETORNASSE APENAS O PRIMEIRO PRODUTO,PREÇO DE CADA LOJA POR EXEMPLO : A LOJA 'A'  VENDEU A BANANA MAIS BARATA, A LOJA 'B' VENDEU O COCO VERDE MAIS BARATO A LOJA 'C' A LARANJA..... e assim por diante , senão o retorno vai ficar muito extenso pois vai ser muitas lojas e produtos.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.