Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

david_sp

Consultas entre 3 tabelas

Recommended Posts

Amigos,Estou com um problema, vamos ver se consigo explicar. Tenho 3 tabelasUH ATRIBUTOUH ATRIBUTOUHXUHCodigoUH CodAtributo CodigoUH Descricao CodAtributoOs campos da tabela ATRIBUTOXUH estão relacionados as outras 2 tabelas e dentro da tabela UH existem registros repetidos, porque o campo CodigoUH pode ter vários CodAtributo, ou seja, eu posso ter a UH 101 repetido. Agora eu precisa de uma instrução que pegue todos os dados mas não queria que trouxesse a UH várias vezes, somente o CodAtributo e a Descricao, mais ou menos assim:CodigoUH CodAtributo Descricao 101 1 Ar 101 2 Frigobar101 3 CamaCasal101 4 Banheira 102 1 Ar102 4 Banheira103 1 Ar104 3 CamaCasalO exemplo acima, eu consegui fazer, mas eu queria que saisse assim:CodigoUH CodAtributo Descricao101 1 Ar 2 Frigobar 3 CamaCasal 4 Banheira 102 1 Ar 4 Banheira 103 1 Ar104 3 CamaCasalOu seja, o CódigoUH não repitam na consulta, a intrução que fiz foi assim:SELECT * FROM UH U, ATRIBUTOUH A, ATRIBUTOUHXUH AU WHERE (U.CODUH=AU.CODUH) AND(A.IDATRIBUTO=AU.IDATRIBUTO)ORDER BY U.CODUHObrigado pela ajuda....

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... estranho....

 

normalmente se manda do jeito q você fez no select primeiro e trata isso na aplicação, pois é infinitamente mais fácil... mas se você precisa.. heehhe

 

o q você tem q saber eh q você vai criar uma tabela de retorno com 3 colunas... e você está falando q vai exibir as vezes 3, e as vezes 2??? bom.. vai ter q usar nesta primeira coluna o valor NULL qdo naum quiser nada

 

vai ai um exemplo com tabelas reais, mas depois você muda para tabela temporárias, para não causar erros, beleza?

CREATE TABLE TB_XXXXX --- alterar esta tabela para uma tabela temporária ou virtualASSELECT * FROM UH U, ATRIBUTOUH A, ATRIBUTOUHXUH AU WHERE (U.CODUH=AU.CODUH) AND(A.IDATRIBUTO=AU.IDATRIBUTO)ORDER BY U.CODUH;UPDATE TB_XXXXX  A1   SET CodigoUH = NULLWHERE EXISTS (SELECT 1 FROM TB_XXXXX A2 WHERE A1.CodigoUH = A2.CodigoUH AND A1.ROWID > A2.ROWID);COMMIT;SELECT * FROM TB_XXXXX;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.