Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
akilles0

Não repetir dado na tabela à esquerda.

Recommended Posts

Bom dia,

 

Queria saber se tem uma maneira ou algum comando que traga os dados em SQL como se fosse um árvore (fiz o exemplo na imagem nesse post). Minha ideia é a seguinte, tenho duas tabelas com relacionamentos certinho, acontece que eu queria apresentar os dados sem repetir na coluna da esquerda, já que na tabela X eu tenho 1 registro que equivale a  1 ou + na tabela Y, queria saber se tem um maneira de fazer isso, a seguir deixo a representação do que quero fazer para ficar mais fácil o entendimento.

 

 

pE3SRdV.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá akilles0,


Desconheço tal forma de trabalhar com o SQL, pois o mesmo trabalha com registros em linhas, ou seja, ele identifica dados que são iguais, porém, tem que coincidir todos os dados da linha X com linha Y (usando o DISTINCT).
Não sei qual sua necessidade, se isso poderia lhe ajudar, mas você já tentou exportar as informações ao Excel e utilizar uma tabela dinâmica para estes casos?

-

Atenciosamente,
Adonai Fabricio Nozella

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não me recordo agora... mas não seria o caso de usar o group By?

Posso estar errado, mas pelo que eu me lembro quando precisei fazer isso com onde tinha um N:N  de várias tabelas...  usei um distinct com group by.

Compartilhar este post


Link para o post
Compartilhar em outros sites
23 horas atrás, dif disse:

Não me recordo agora... mas não seria o caso de usar o group By?

Posso estar errado, mas pelo que eu me lembro quando precisei fazer isso com onde tinha um N:N  de várias tabelas...  usei um distinct com group by.

 

Sim, resolveria, porém (obviamente) repete a coluna, e ele quer via SQL que a coluna que for repetir não apareça o nome.

 

 

Alias, pensando bem, faça um  ROWNUM OVER ( PARTITION BY X.DATA, X.TIPO, X.TEXTO ORDER BY X.DATA ASC )

COM UM CASE SE O VALOR FOR DIFERENTE DE ZERO MOSTRA NULL PARA CADA COLUNA.

 

A ideia é a seguinte, com ROWNUM com partition by, você consegue definir uma sequencia de linhas para qualquer grupo que quiser separar então

A

A

B

B

 

VAI SER

1 A

2 A

 

1B

2B

 

ENTÃO se fizer um

 

CASE ROWNUM

WHEN 1 THEN Texto ELSE NULL

 

acho que assim dá pra fazer como quer, porém utilizei esse recurso já apenas em Oracle e Sql Server, não sei se o banco que você utiliza tem, mas tá ai.

 

To com sono. Se preferir me passe o código e monto para você.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 minutos atrás, emailpublico3 disse:

Se preferir me passe o código e monto para você.

Espere até o autor postar uma tentativa com as informações que demos a ele.

De nada adianta darmos o código feito :)

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 16 horas atrás, emailpublico3 disse:

     

    Sim, resolveria, porém (obviamente) repete a coluna, e ele quer via SQL que a coluna que for repetir não apareça o nome.

     

     

    Alias, pensando bem, faça um  ROWNUM OVER ( PARTITION BY X.DATA, X.TIPO, X.TEXTO ORDER BY X.DATA ASC )

    COM UM CASE SE O VALOR FOR DIFERENTE DE ZERO MOSTRA NULL PARA CADA COLUNA.

     

    A ideia é a seguinte, com ROWNUM com partition by, você consegue definir uma sequencia de linhas para qualquer grupo que quiser separar então

    A

    A

    B

    B

     

    VAI SER

    1 A

    2 A

     

    1B

    2B

     

    ENTÃO se fizer um

     

    CASE ROWNUM

    WHEN 1 THEN Texto ELSE NULL

     

    acho que assim dá pra fazer como quer, porém utilizei esse recurso já apenas em Oracle e Sql Server, não sei se o banco que você utiliza tem, mas tá ai.

     

    To com sono. Se preferir me passe o código e monto para você.

     

    Usando row_number() over () cheguei num resultado mais próximo do satisfatório.

     

    Fiquei com uma dúvida, usei três row_number() over () para um para cada campo (Data, TIpo e Texto) por conta do WHEN, já que preciso dessas colunas separadas. Fiz o certo? Ou teria como usar apenas um CASE row_number() over () para inserir as colunas? Pode me ajudar nesse questão.

     

    Muito obrigado pela ajuda até aqui.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @emailpublico3 uma coisa que notei, usando row_number() over () no campo do TEXTO, quando ele é NULL, todos os campos a esquerda também ficam.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×