Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Select em duas tabelas


Valdilei

Pergunta

Olá pessoal,

Como fazer o seguinte select?

Tenho duas tabelas com 11 colunas de mesmo nomes (id, a1, a2....,a10) e preciso fazer uma consulta na Tabela b mostrando as linhas que são iguais as das Tabela a, valendo a partir de a1, ou seja, as 10 colunas.

alguém tem uma idéia?

Obrigado.

Editado por Valdilei
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
alguém tem uma idéia?

Oi Valdinei!

A idéia é esta:

Tabela2
id  a1 a2 a3
1   aa be ch
2   bb dd dd
3   aa aa aa
4   xx be aa
5   bb dd dd
SELECT * 
FROM Tabela2 WHERE a1 =
(SELECT a1  FROM tabela2 GROUP BY a1, a2, a3 HAVING COUNT(id) > 1 )
Linhas retornadas
Tabela2
id  a1 a2 a3
2   bb dd dd
5   bb dd dd

Acrescente os campos conicidentes na cláusula GROUP BY

Link para o comentário
Compartilhar em outros sites

  • 0

Denis,

Obrigado!

Mas to com dúvidas. O select é em duas tabelas,procurando as linhas da tabela2 que estão na tabela1, então pelo entendi tenho que unir as duas pra fazer o select que você sugeriu, certo?

Outra coisa eu quero manter o id da tabela2. No exemplo dado, foram retonados os ids 2 e 5. Queria retornar só a linha da tabela2, no caso seria a do id 5 supondo que fosse da tabela2.

N sei se fui claro, mas é isso. Você pode me ajudar?

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Valdilei!

Mas to com dúvidas. O select é em duas tabelas,procurando as linhas da tabela2 que estão na tabela1, então pelo entendi tenho que unir as duas pra fazer o select que você sugeriu, certo?

Não. Veja resposta completa abaixo

Outra coisa eu quero manter o id da tabela2. No exemplo dado, foram retonados os ids 2 e 5. Queria retornar só a linha da tabela2, no caso seria a do id 5 supondo que fosse da tabela2.

Neste caso o select é um pouco diferente. Ele usará um INNER JOIN e será assim:

Supondo que a estrutura da tabela1 seja igual a tabela2 mas os registros estejam em ordem diferente. tal como abaixo

Nota a tabela2 já foi mencionada no post anterior.

Tabela1
id  a1 a2 a3
1   bb dd dd
2   aa be ch
3   aa aa aa
4   bb da dd
5   xx be aa
SELECT t1.id, t2.id 
FROM tabela1 t1
INNER JOIN tabela2 t2 ON t1.a1=t2.a1 and t1.a2=t2.a2 and t1.a3=t2.a3 and t1.a4=t2.a4
O retorno seria assim:
t1.id t2.id
1      2
1      5
2      1
3      3
5      4

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Denis!

Consegui selecionar. Mas se eu quizer deixar na mesma ordem como nas linhas da tabela2, como faço?

Com o select acima fica assim:

retorno:

id a1 a2 a3

2 1 2 5

1 2 3 4

O retorno fica ordenado em ordem crescente dos elementos a1, a2 e a3....

Para ficar assim:

retorno

id a1 a2 a3

1 2 3 4

2 1 2 5

Como faço:

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Valdilei!

Simplesmente acrescente a cláusula ORDER BY após a linha do JOIN.

Deste jeito:

SELECT t1.id, t2.id 
FROM tabela1 t1
INNER JOIN tabela2 t2 ON t1.a1=t2.a1 and t1.a2=t2.a2 and t1.a3=t2.a3 and t1.a4=t2.a4 
ORDER BY t2.id

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...