david_sp 0 Denunciar post Postado Julho 18, 2006 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
ska_ska 0 Denunciar post Postado Julho 20, 2006 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